js原型的一个问题

例子1

function Person(name) {

    this.name = name

}

// 修改原型

Person.prototype.getName = function() {}

var p = new Person('jack')

console.log(p.__proto__ === Person.prototype) // true

console.log(p.__proto__ === p.constructor.prototype) // true


例子2

function Person(name) {

    this.name = name

}

// 重写原型

Person.prototype = {

    getName: function() {}

}

var p = new Person('jack')

console.log(p.__proto__ === Person.prototype) // true

console.log(p.__proto__ === p.constructor.prototype) // false

最后p.constructor.prototype还是有点不理解?


白猪掌柜的
浏览 378回答 1
1回答

倚天杖

Person.prototype = {    getName: function() {}}var p = new Person('jack');// 例子二中 相当于赋值成了一个对象。这时p.constructor指向了Object。而不是构造器函数Person// 需要修正:p.constructor = Person;console.log(p.__proto__ === Person.prototype) // trueconsole.log(p.__proto__ === p.constructor.prototype) // true
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript