手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >理解JavaScript的prototype属性
理解JavaScript的prototype属性
摘要:其实,关于prototype只要几句话就可以总结:任何原型都是对象,只有对象有原型只有Function有prototype属性,它是这个Fu...

其实,关于prototype只要几句话就可以总结:

任何原型都是对象,只有对象有原型

只有Function有prototype属性,它是这个Function作为构造器时生成对象所继承的原型。Function的原型和它的prototype属性无关

对象的原型可以通过非标准的属性 __proto__ 或ECMAScript5的方法 Object.getPrototypeOf() 访问。

1其实是错的,Object这个原型链尽头的对象它没有原型。可是为了更简单表述。在看原型链后你就会明白.toString()这类没有定义过的方法是怎样来的。

上面说的二义性,是文字理解上的,语法本身没有歧义。prototype是原型的意思,可是一个对象的原型不是由prototype去访问。

Function有prototype属性,可是和自己的原型没有关系。理解这点后,再去看关于原型链、继承的文章就容易理解多了。

下面是些例子,可以加深认识:

复制代码 代码如下:

// 任何对象都有原型

obj = {};

console.log( obj.__proto__ );

console.log( Object.getPrototypeOf(obj) );

console.log( obj.__proto__ === Object.getPrototypeOf(obj) );

//对象并没有语法意义的prototype属性

alert(obj.prototype) //undefined

//prototype作为一个属性,仅存在于Function中,代表以这个Function创建的新实例集成的原型,和Function本身的原型无关

var F = function(name){

this.name = name;

}

obj = {a:3,

get b (){

return this.a;

}

};

F.prototype = obj;

newObj = new F('new name');

newObj.name; //作为构造器,name是newObj的自身属性

newObj.a; //3

//它继承了obj。可以通过这样证实:

Object.getPrototypeOf( newObj ) === obj; // true

newObj.__proto__ === obj; //true

【理解JavaScript的prototype属性】相关文章:

Javascript实现div的toggle效果实例分析

详解 JavaScript 闭包的小知识

详解JavaScript中void语句的使用

详解Javascript中的Object对象

JavaScript的9种继承实现方式归纳

JavaScript实现Iterator模式实例分析

JavaScript中的toUTCString()方法使用详解

JavaScript中的Math.LN2属性用法详解

JavaScript调试技巧

JavaScript中的acos()方法使用详解

精品推荐
分类导航