详解原型对象(prototype)
详解原型对象(prototype)
- 如何理解原型(prototype)
- 原型规则和示例
如何理解原型(prototype)
JavaScript 是一种通过原型实现继承的语言,它与别的高级语言是有区别的,例如Java. C#是通过类型决定继承关系的,JavaScript 是动态的弱类型语言。总之,可以认为JavaScript中所有数据都是对象。在JavaScript中,原型也是一个对象,用原型可以实现对象的属性继承,JavaScript 的对象中都包含了一个"prototype"内部属性,这个属性所对应的就是该对象的原型。
作为对象的内部属性,"prototype"是不能直接访问的。所以,为了方便查看对象的原型,Firefox和Chrome内核的JavaScript 引擎中提供了" __proto__"这 个非标准的访问器(ECMA新标准中引入了标准对象原型访问器"Object.getPrototype(object)" )。
原型的主要作用就是实现继承与扩展对象。
原型规则和示例
1、所有的引用类型(数组、对象、函数)都具有对象的特征(可以自由扩展属性,null除外),如下所示:
var obj = {};
obj.a = 100;
var arr = [];
arr.a = 100;
function fn(){};
fn.a = 100;
var f1 = new fn();
2、所有的引用类型(数组,对象、函数)都有一个__ptoto__属性,属性值是一个普通对象。如下所示:
var obj = {};
obj.a = 100;
var arr = [];
arr.a = 100;
function fn(){};
fn.a = 100;
var f1 = new fn();
console.log(obj.__proto__);
console.log(arr.__proto__);
console.log(fn.__proto__);

3、所有的函数都有一个prototype属性,属性值也是一个普通对象。
function fn(){};
fn.a = 100;
var f1 = new fn();
console.log(fn.__proto__);
console.log(fn.prototype);

4、所有的引用类型(数组、对象、函数),__proto__都指向它的构造函数的prototype属性值。
var obj = {};
obj.a = 100;
var arr = [];
arr.a = 100;
function fn(){};
fn.a = 100;
var f1 = new fn();
console.log(obj.__proto__);
console.log(arr.__proto__);
console.log(fn.__proto__);
console.log(obj.__proto__===Object.prototype);
console.log(arr.__proto__===Array.prototype);
console.log(f1.__proto__===fn.prototype);

5、当调用一个对象的函数或属性时,如果当前对象里找不到,那么就在原型对象里面逐级寻找。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
