猿问

一个关于prototype与new的问题

function A(){

  this.a = '1';

  this.b = '2';

  this.init();

}


A.prototype.init = function(){

  console.log('000000');

}


new A()

上面的这个可以输出000000,而下面这个就不行:

function A(){

  this.a = '1';

  this.b = '2';

  this.init();

}


A.init = function(){

  console.log('000000');

}


new A()

这是为什么呢?

神不在的星期二
浏览 620回答 1
1回答

MM们

使用new的时候大概就像这个样子:Function.method('new', function() {    var that = Object.create(this.prototype);    // 刚刚打错了,第一个参数是that     // 这句话就是调用构造函数,也就是执行你上面的 this.a = ...     var other = this.apply(that, arguments);    return (typeof other === 'object' && other) || that; }(摘抄自《JavaScript语言精粹》)也就是说,先从原型创建一个对象,然后调用构造函数的内容,你这里的话就是执行this.a = '1';这些内容所以你直接给A加一个init函数是没用的。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答