相关疑难解决方法(0)

JavaScript中的'new'关键字是什么?

newJavaScript中的关键字在第一次遇到时会非常混乱,因为人们倾向于认为JavaScript不是面向对象的编程语言.

  • 它是什么?
  • 它解决了什么问题?
  • 什么时候适当,什么时候不适合?

javascript new-operator

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

如果在Javascript中声明没有New的数组会发生什么?

可能重复:
JavaScript中的Array(1)和新Array(1)之间有什么区别?

在javascript中,这两者有何不同?

var arr = Array();  
var arr2 = new Array();
Run Code Online (Sandbox Code Playgroud)

如果根据JS标准它们是相同的,那么是否有任何浏览器以不同方式处理这两种方式?

javascript

16
推荐指数
1
解决办法
2874
查看次数

什么时候*不*在内置插件上使用新工作?

使用内置的JavaScript对象和构造函数,我注意到有点奇怪的东西.

有时,可以通过调用构造函数来获取新对象new.例如:

> new Array(1,2,3,4)
[1, 2, 3, 4]
> Array(1,2,3,4)
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

但有时这不起作用:

> Date()
"Thu Jun 05 2014 00:28:10 GMT-0600 (CST)"
> new Date()
Date 2014-06-05T06:28:10.876Z
Run Code Online (Sandbox Code Playgroud)

是否在ECMAScript规范中的任何位置定义了非新构造函数内置函数的行为?请注意,此行为实际上很有用; 我可以通过调用来制作一个非稀疏的数组副本Array.apply(arr),但如果它是跨平台的话,我只会觉得这样做很舒服.

javascript standards

7
推荐指数
1
解决办法
199
查看次数

为什么Array().切片没有"新"工作?

从这里:

function highest(){ 
  return makeArray(arguments).sort(function(a,b){ 
    return b - a; 
  }); 
} 

function makeArray(array){ 
  return Array().slice.call( array ); 
} 

assert(highest(1, 1, 2, 3)[0] == 3, "Get the highest value."); 
assert(highest(3, 1, 2, 3, 4, 5)[1] == 4, "Verify the results.");
Run Code Online (Sandbox Code Playgroud)

现在,为什么Array()甚至在没有new操作员的情况下返回有意义的东西 我在JS中看到的大多数"类"定义undefined如果没有调用则返回new:

function User(name) {
  this.name = name;
  this.jump = function() {
    console.log(name + " is jumping!");
  }
}

assert(typeof(User("no New")) == 'undefined');
Run Code Online (Sandbox Code Playgroud)

javascript

3
推荐指数
1
解决办法
98
查看次数

标签 统计

javascript ×4

new-operator ×1

standards ×1