【发布时间】:2017-08-23 16:48:40
【问题描述】:
我是 JavaScript 新手,发现下面两种不同的方法都可以实例化对象。
我查看了从两个构造函数创建的对象,它对我来说似乎是一样的。
但我不确定这两种方法有什么区别?在哪种情况下一种方法比另一种更好?
谁能解释一下?谢谢。
Person1.js
function Person1(name){
this.name = name;
this.initialize();
}
Person1.prototype.initialize = function (todoName) {
console.log("Initalize function Person 1 class"+this);
f1(this);
}
function f1(caller) {
console.log("F1 Person 1 class"+this);
console.log(this);
console.log("F1 Person 1 class caller"+caller);
console.log(caller);
}
Person2.js
var Person2 = (function(){
function Person2(name){
this.name = name;
this.initialize();
}
Person2.prototype.initialize = function (todoName) {
console.log("Initalize function Person 2 class"+this);
f1(this);
}
function f1(caller) {
console.log("F1 Person 2 class"+this);
console.log(this);
console.log("F1 Person 2 class caller"+caller);
console.log(caller);
}
return Person2;
})();
使用以下代码实例化对象:
var p1 = new Person1("P1");
var p2 = new Person2("P2");
console.log("Completed ");
console.log("P1 ");
console.log(p1);
console.log("P2 ");
console.log(p2);
【问题讨论】: