JS中对象对象的原型概念基�
对象概念
在javascript中,所有引用类型都是对象。例如,在函数Foo () {}中,Foo本身是一个对象的引用。创建对象方式文字方式新构造函数声明对象创建
文字对象
在javascript语言级别快速创建对象实例
var obj={foo: 'foo ',bar : ' bar ' };//对象文字var obj2=[obj,' foo ',' bar '];//数组文字varobj 3=/[a-za-z0-9]$/;//RegExp正则文字var obj 4=function(){ };//函数函数文字新构造函数
通过内置对象的构造函数或自定义函数。使用新运算符创建对象并执行构造函数方法。
var obj=新对象();var obj2=新数组(1000);var obj3=新regexp('^[a-za-z0-9]$');var obj4=新函数(' a ',' b ','返回a;b ');函数声明
函数声明创建对象。函数属于特殊对象。
function Foo(){ } Foo instance of Object;函数的Foo实例;对象.创建
传入一个对象作为返回对象的原型,创建一个新对象,并将新对象的原型指向传入的对象。
var foo={ 'foo': 'foo ',' bar ' : ' bar ' };变量o=对象. create(foo);//o . _ _ proto _ _=foo console . log(o . foo);//o.__proto__。foo使用Object.create(null)返回一个单词典型对象。
var o=Object.create(空);对象的实例;//返回falseo . ToString();//未捕获的类型错误对象原型
每个对象都有一个内置的__proto__属性,指向构造它的函数的原型属性。和构造者的
Prototype.constructor指向本机构造函数。对象属性的搜索过程由以下部分组成:
查找对象属性的数据描述符(可写,值)或访问描述符(getter,setter),如果找到,返回相应的值。如果没有,请转到步骤2。找出是否显示和定义了对象属性的值(可以通过Object.getOwnPropertyNames检查),如果定义了对象属性,则返回定义的值。如果没有,请继续步骤3。寻找隐藏原型__proto__对象的属性,规则与步骤1和2中的规则相同。如果没有找到,重复步骤3,直到__proto__为空。
具体情况如下图:所示
测试对象原型
测试对象在其原型链中是否具有构造函数的原型属性
object . prototype . is rototype of的实例
实例f
运算符,语言级别检测对象的原型链是否包含构造函数的原型
Function Foo(){ } Foo instance of Function;//返回对象的trueFoo实例;//return true模拟查找对象原型链的构造函数是否包含传入的构造函数的实例,并且__proto__在某些特定的浏览器中向用户公开
function Bar(){ } function is instance of(obj,Constructor){ if(obj===null){ return false;}//忽略类型字符串、数字、布尔值、null、未定义if(!~['对象','函数']。index of(type of obj)){ return false;} var原型=obj。_ _ proto _ _while(prototype){ if(prototype . Constructor===Constructor){ return true;}原型=原型。_ _ proto _ _}返回false}isInstanceof(Bar,Function);(条,对象)的实例;isPrototypeOf
构造函数的原型对象的函数属性用于检测目标对象的原型链中是否存在构造函数的原型对象。
函数Baz(){ } var Baz=new Baz();baz . prototype . is rototypeof(baz);function . prototype . is rototypeof(baz);object . prototype . is rototypeof(baz);获取对象原型
var o={ };var prototype=object . getprototypeof(o);console.log(原型===object . prototype);//返回true//部分浏览器有效var O2={ };console.log(o2。_ _ proto _ _===object . prototype);//返回true设置对象原型object . createobject . set rototypeof
对象.创建
返回一个对象并设置其原型
function Foo(){ } function Bar(){ } Foo。原型。Foo=' Foo酒吧。原型=对象。创建(Foo。原型);巴录书原型。构造函数=Bar//修正原型链的构造函数var o=新Bar();控制台。原木(o . foo);//返回富(中国姓氏)控制台日志;//返回trueObject.setPrototypeOf
直接设置对象的隐式原型__原型_ _
function Foo(){ } Foo。原型。名称=' Foo变量o=对象。创建(空);对象。设置rototypof(o,Foo。原型);控制台。日志(o . name);//返回富(中国姓氏)小结
对象具有许多考验开发者的一些知识点。能够完全理解并整理出来是不容易的。后续我会针对对象的继承做个详细的介绍。感谢你对我们的支持。
版权声明:JS中对象对象的原型概念基�是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。