一.继承基础知识
prototype和proto之间的区别
- 每一个js对象都有proto对象(值就是它所对应的原型对象, 因此可以将proto对象称作原型对象), 并从原型对象继承属性和方法
- 只有函数才会有prototype对象,且使用new声明对象, 对象实例的proto(原型对象)对应于函数的prototype对象,并以此实现继承
例如:
// one 是对象字面量,es规定继承自Object
var one = {x: 1};
// two明确是Object的实例
var two = new Object();
console.log(one.__proto__ === Object.prototype); // true
console.log(two.__proto__ === Object.prototype); // true
console.log(one.toString === one.__proto__.toString); // true
console.log('one.prototype', one.prototype); // undefined
二.继承体系
js继承体系.jpg验证如下:
验证Function.prototype继承Object.prototype
Function.prototype.__proto__ === Object.prototype // true
验证Object, Function, Array, String, Number, Boolean继承Function.prototype
Object.__proto__ === Function.prototype; // true
Function.__proto__ === Function.prototype; // true
Array.__proto__ === Function.prototype; // true
String.__proto__ === Function.prototype; // true
Number.__proto__ === Function.prototype; // true
Boolean.__proto__ === Function.prototype; // true
网友评论