相关疑难解决方法(0)

理解Object.create()和new SomeFunction()之间的区别

我最近Object.create()在JavaScript中偶然发现了这个方法,并试图推断它与创建一个对象的新实例有什么不同new SomeFunction(),当你想要使用另一个时.

请考虑以下示例:

var test = {
  val: 1,
  func: function() {
    return this.val;
  }
};
var testA = Object.create(test);

testA.val = 2;
console.log(test.func()); // 1
console.log(testA.func()); // 2

console.log('other test');
var otherTest = function() {
  this.val = 1;
  this.func = function() {
    return this.val;
  };
};

var otherTestA = new otherTest();
var otherTestB = new otherTest();
otherTestB.val = 2;
console.log(otherTestA.val); // 1 
console.log(otherTestB.val); // 2

console.log(otherTestA.func()); // 1
console.log(otherTestB.func()); // 2
Run Code Online (Sandbox Code Playgroud)

请注意,在两种情况下都观察到相同的行为.在我看来,这两种情况之间的主要区别是:

  • Object.create()实际使用的对象实际上形成了新对象的原型,而在new …

javascript prototype object-create

372
推荐指数
10
解决办法
12万
查看次数

为什么arr = []比arr = new Array更快?

我运行此代码并得到以下结果.我很想知道为什么[]更快?

console.time('using[]')
for(var i=0; i<200000; i++){var arr = []};
console.timeEnd('using[]')

console.time('using new')
for(var i=0; i<200000; i++){var arr = new Array};
console.timeEnd('using new')
Run Code Online (Sandbox Code Playgroud)
  • 使用[]:299ms
  • 使用new:363ms

感谢Raynos,这里是此代码的基准,以及一些更可行的方法来定义变量.

在此输入图像描述

javascript performance

144
推荐指数
2
解决办法
5万
查看次数

我应该使用对象文字或构造函数吗?

我对在javascript中创建对象的方式感到困惑.似乎至少有两种方式.一种是使用对象文字符号,而另一种是使用构造函数.一个优于另一个有优势吗?

javascript

92
推荐指数
6
解决办法
5万
查看次数

如何在JavaScript中为自定义对象创建方法?

是不是......

var obj = new Object();

obj.function1 = function(){
    //code
}
Run Code Online (Sandbox Code Playgroud)

或类似的东西?

javascript methods object

50
推荐指数
3
解决办法
7万
查看次数

Javascript:{} vs new Object()性能

我想理解为什么两者都做同样的事情时性能上的差异?

在此输入图像描述

基准

javascript performance

25
推荐指数
1
解决办法
1万
查看次数

Javascript对象构造函数与对象文字

可能重复:
创建对象 - 新对象或对象文字符号?
文字符号VS. 构造函数在JavaScript中创建对象

我正在阅读我的第一个Javascript教程.

我刚刚发现了两种创建JS对象的方法.

var person = new Object();
person.name = "Tom";
person.age = "17";
Run Code Online (Sandbox Code Playgroud)

var person = {};
person.name = "Tom";
person.name = "17"
Run Code Online (Sandbox Code Playgroud)

这两种对象创建方式有何不同?由于第二个看起来更简单,我们是否可以在任何条件下使用它?

javascript

17
推荐指数
1
解决办法
2万
查看次数

"{}"和"new Object()"之间的区别

可能重复:
创建对象 - 新对象或对象文字符号?

以下是什么区别:

var myData = new Object();
myData["name"] = "ATOzTOA";
myData["site"] = "atoztoa";
Run Code Online (Sandbox Code Playgroud)

var myData = {};
myData["name"] = "ATOzTOA";
myData["site"] = "atoztoa";
Run Code Online (Sandbox Code Playgroud)

更新

我得到的是......

var myData = {
    "name" : "ATOzTOA",
    "site" : "atoztoa",
};
Run Code Online (Sandbox Code Playgroud)

是一个快捷方式

var myData = new Object({
    "name" : "ATOzTOA",
    "site" : "atoztoa",
});
Run Code Online (Sandbox Code Playgroud)

我对吗?

javascript

9
推荐指数
1
解决办法
7893
查看次数

为什么jslint比Object(obj)更喜欢{} .constructor(obj)

两者都将检测对象而不是基元.

这似乎是一种纯粹的语法差异.

// jslint prefers {}.constructor(obj) over Object(obj)
// called isObject by underscore
// will test only for objects that have writable keys
// for example string literals will not be detected
// but arrays will
var isWritable = function (obj) {
    return {}.constructor(obj) === obj;
};
Run Code Online (Sandbox Code Playgroud)

javascript jslint

8
推荐指数
1
解决办法
121
查看次数

写得更好:var arr = []; 比var arr = new Array();?

写作更好吗?

var arr=[]; then var arr=new Array(); 
var obj={}; then var obj=new Object();
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么?

我阅读了关于这个想法的幻灯片第36页,但没有给出解释或示例为什么它更好.

javascript

6
推荐指数
1
解决办法
5319
查看次数

什么时候建议在Javascript中将String,Number和Boolean声明为Objects

什么时候Javascript数据类型应该声明为对象?它们会降低执行速度,并产生令人讨厌的副作用,为什么这可能呢?

根据W3Schools:http://www.w3schools.com/js/js_numbers.asp 在此输入图像描述 也来自http://www.w3schools.com/js/js_datatypes.asp 在此输入图像描述

javascript

6
推荐指数
1
解决办法
1180
查看次数