浅谈对js原型的理解
2018-06-24 01:41:55来源:未知 阅读 ()
一. 在JavaScript中,一切皆对象,每个对象都有一个原型对象(prototype),而指向该原型对象的内部指针则是__proto__。当我们对对象进行for in 或者for of遍历时,就会通过__proto__依次遍历对象关联的所有对象。这就是原型链,遍历所有对象的父对象直到object直至null。
function Person(name,work){ this.name = name; this.work = work; } Person.prototype.show = function(){ console.log(this.name); } var person = new Person('nicknailo','全栈开发'); console.log(person.__proto__ === Person.prototype); //true
console.log(Person.prototype.__proto__);//Object 或者{}
console.log(person.__proto__.__proto__.__proto__);//null
console.log(Person.prototype);//Person { show: [Function] }
person对象的原型指向 Person.prototype,Person.prototype指向object,object 指向 null。蕴含了一个哲理,无中生有。
二.
这是一张描述了Object、Function以及一个函数实例Foo他们之间原型之间联系。如果理解了上面的概念,这张图是不难读懂。
Function.prototype.proto 指向了 Object.prototype,这说明Function.prototype 是一个 Object实例,那么应当是先有的Object再有Function。
但是Object.prototype.constructor.proto 又指向了 Function.prototype。这样看来,没有Function,Object也不能创建实例。
三.Person.prototype只是对象的原型上(constructor)扩展的属性。
var animal = function(){}; var dog = function(){}; animal.price = 2000; dog.prototype = animal; var tidy = new dog(); console.log(dog.price + " : dog.price");//undefined : dog.price console.log(tidy.price + " : tidy.price"); //2000 : tidy.price
上述代码可以看出来,实例tidy只与原型对象dog.prototype存在关联,上面的代码可以看成是 dog.prototype.price = 2000;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 浅谈JS的基础类型与引用类型 2020-02-29
- 深入理解JavaScript是如何实现继承的 2020-02-25
- js工厂函数创建对象与对象构造函数的理解 2019-08-14
- JS变量、作用域 2019-08-14
- call,apply,bind的理解 2019-08-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash