__proto__和prototype

看到这两个东西就头疼。。。

▍示例

var a = {
	num: 4,
}

	
var b = function() {
	
}

console.log('a.__proto_:', a.__proto__, '\n\n');
console.log('a.__proto_.__proto__:', a.__proto__.__proto__, '\n\n');
console.log('a.prototype:', a.prototype, '\n\n');
console.log('b.__proto__:', b.__proto__, '\n\n');
console.log('b.__proto__.__proto__:', b.__proto__.__proto__, '\n\n');
console.log('b.prototype:', b.prototype, '\n\n');
console.log('b.prototype.__proto_:', b.prototype.__proto_, '\n\n');
console.log('Object.__proto__:', Object.__proto__, '\n\n');
console.log('Object.__proto__.__proto__:', Object.__proto__.__proto__, '\n\n');
console.log('Object.prototype:', Object.prototype, '\n\n');
console.log('Object.prototype.__proto__:', Object.prototype.__proto__, '\n\n');
console.log('Function.__proto__:', Function.__proto__, '\n\n');
console.log('Function.__proto__.__proto__:', Function.__proto__.__proto__, '\n\n');
console.log('Function.prototype:', Function.prototype, '\n\n');
console.log('Function.prototype.__proto__:', Function.prototype.__proto__, '\n\n');

效果:

▍结论

  1. 任何对象有__proto__和prototype属性;
  2. 非函数对象只有__proto__属性;
  3. prototype中有__proto__属性。且是Object构造函数创建的;
  4. 函数对象__proto__指向它的创建者及Function构造函数;
  5. Function构造函数__proto__指向它自己;
  6. Object对象的prototype中的__proto__是null;

▍原文

js中的__proto__和prototype

猜你喜欢

转载自blog.csdn.net/i_dont_know_a/article/details/84326075
今日推荐