首页 > 编程语言 > 详细

JavaScript prototype备忘

时间:2015-07-04 00:38:05      阅读:250      评论:0      收藏:0      [点我收藏+]

 __proto__:所有对象都有的属性。

var obj = {};
console.log(obj.__proto__); //{}
var obj1 = new Object();
console.log(obj1.__proto__); //{}
var func = function() {};
console.log(func.__proto__); //[Function:Empty]

 

prototype:函数对象中的属性。

var obj = {};
var func = function() {};
console.log(func.prototype);  //{}
console.log(obj.prototype); //undefined

 

所有对象的root为object,object的__proto__为null

var obj = {};
console.log(obj.__proto__); //{}
console.log(obj.__proto__.__proto__); //null

var func = function() {};
console.log(func.__proto__); //[Function:Empty]
console.log(func.__proto__.__proto__); //{}
console.log(func.__proto__.__proto__.__proto__);//null

 

使用构造函数创建的对象中,__proto__为构造函数的prototype指向的对象

var Func = function() {};
Func.prototype.name = ‘f1‘;
console.log(Func.prototype); //{name:‘f1‘}
var obj = new Func();
console.log(obj.__proto__); //{name:‘f1‘}
console.log(Func.prototype==obj.__proto__); //true

 

实现继承时,__proto__的指向:dog1 instance->Dog.prototype->Animal.prototype->object->null

function Animal() {}
Animal.prototype.name = ‘animal‘;
function Dog() {}
Dog.prototype = new Animal();
Dog.prototype.height = 10;
console.log(Animal.prototype); //{name:‘animal‘}
console.log(Dog.prototype); //{height:10}
var dog1 = new Dog(); console.log(dog1); //{} console.log(dog1.__proto__); //{height:10} console.log(dog1.__proto__.__proto__); //{name:‘animal‘} console.log(dog1.__proto__.__proto__.__proto__);//{} object console.log(dog1.__proto__.__proto__.__proto__.__proto__);//null root
console.log(dog1.name); //animal
console.log(dog1.height); //10

 

 额,,刚学JavaScript,暂时就想到这么多。

 

 

 

  

      

 

JavaScript prototype备忘

原文:http://www.cnblogs.com/sttyzh/p/4619723.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!