博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
prototype与__proto__区别
阅读量:6049 次
发布时间:2019-06-20

本文共 1566 字,大约阅读时间需要 5 分钟。

--proto是每个对象都有的一个属性。而prototype是函数才会有的属性!!!

使用Object.getPrototypeOf()代替__proto__!!!

一、prototype

几乎所有的函数(除了一些内置函数)都有一个名为prototype(原型)的属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以有特定类型的所有实例共享的属性和方法。prototype是通过调用构造函数而创建的那个对象实例的原型对象。hasOwnProperty()判断指定属性是否为自有属性;in操作符对原型属性和自有属性都返回true。

示例:自有实行&原型属性

1 var obj = {a:1};2 obj.hasOwnProperty("a");  //true3 obj.hasOwnProperty("toString");  //false4 "a" in obj;  //true5 "toString" in obj; //true

示例:鉴别原型属性

1 function hasPrototypeProperty(obj ,name){2   return name in obj && !obj.hasOwnProperty(name);  3 }

二、--proto--

对象具有属性--proto--,可称之为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型,这也保证了实例能够访问在构造函数原型中定义的属性和方法。

1 function Foo (){2   var Boo ={name:"Boo"};3   Foo.prototype = Boo;4 var f = new Foo();5 console.log(f.__proto__===Foo.prototype); //true6 console.log(f.__proto__===Boo);    //true7 Object.getPrototypeOf(f)===f.__proto__; //true8 }

三、Object.getPrototypeOf()

一个对象实例通过内部属性【prototype】跟踪其原型对象。使用原型对象的好处是可以让所有对象实例共享它所包含的属性和方法。可以调用对象的ObjectgetPrototypeOf()方法读取【Prototype】属性的值,也可以使用isPrototypeOf()方法检查某个对象是否是另一个对象的原型对象。大部分javaScript引擎在所有对象上都支持一个名为__proto__的属性,该属性可以直接读写【Prototype】属性。

实例:原型对象

1 function Person (name){ 2   this.name = name;   3 } 4 Person.prototype = { 5   constructor:Person, 6   sayName:function(){ 7   console.log("my name is "+ this.name); 8    9     }    10 11 }12 var p1 = new Person("xinfei");13 var p2 = new Person("jiufei");14 p1.sayName(); //my name is xinfei15 p2.sayName(); //my name is jiufei

转载:https://blog.csdn.net/ligang2585116/article/details/53522741

 

转载于:https://www.cnblogs.com/1403723150cxf/p/9701153.html

你可能感兴趣的文章
XenDesktop7.6安装部署入门教程
查看>>
HashMap的工作原理及HashMap和Hashtable的区别
查看>>
GregorianCalendar日历程序
查看>>
Sublime 中运行 Shell 、Python、Lua、Groovy...等各种脚本
查看>>
【Java集合源码剖析】ArrayList源码剖析
查看>>
linux的目录结构
查看>>
这次逻辑通了,
查看>>
HTMLHelper
查看>>
快速构建Windows 8风格应用29-捕获图片与视频
查看>>
OC语言Block和协议
查看>>
使用xpath时出现noDefClass的错误(找不到某个类)
查看>>
.Net规则引擎介绍 - REngine
查看>>
CSS3 transforms 3D翻开
查看>>
利用传入的Type类型来调用范型方法的解决方案
查看>>
Top命令内存占用剖析
查看>>
转 网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO
查看>>
求带分数(蓝桥杯)
查看>>
Retrofit 入门学习
查看>>
Spring Boot学习笔记
查看>>
laravel 集合接口
查看>>