1) 在定义函数时不要使用new,而是在调用函数以创建新对象时使用new。
2) 如果在定义函数时使用new,则意味着它会立即触发。这有时会很方便…………但这确实不是初学者应该学习的方式。此外,这种技术更被接受的版本称为 IIFE(立即调用函数表达式),它看起来像
(function () {
/* function stuff in here */
}());
而不是
new function () { /* function stuff in here */ }
如果您尝试以这种方式定义函数,稍后尝试使用它会出错(因为未定义)。
这里有两种实际定义函数的方法:
var sayHi = function () { console.log("Hi!"); };
和
function sayHello () { console.log("Hello"); }
这些都不使用new。
为了给他们打电话,让他们做他们的工作,你不需要使用.call()。
.call() 会起作用,但它有一个特殊用途,您在很长一段时间内都不需要。
您需要做的就是:
sayHello();
sayHi();
New 旨在用于制作某种对象时。
在 JavaScript 中创建对象非常简单:
var obj = {};
var person = { name : "Bob" };
person.name; // "Bob"
person.age = 32;
使用对象非常非常容易。
但在其他编程语言中,您需要classes,它们就像对象的蓝图。
在 JS 中,你可能会创建一个这样的类:
function Person (name, age) { this.name = name; this.age = age; }
然后像这样使用它:
var bob = new Person("Bob", 32);
bob.name; // "Bob";
bob.age; // 32;
看到我把new放在哪里了吗?
我用了一个造人的函数,我说我想让bob成为new Person。
但同样,在 JS 中,这可以很简单:
var mike = { name : "Mike", age : 20 };
不必构建函数,不必使用new。它刚刚工作。