资讯专栏INFORMATION COLUMN

javascript对象原型成员详解

zhkai / 2480人阅读

摘要:和的作用一样,区别在于写法语法对象对象作用判断对象是否在对象的原型链上语法对象构造函数作用判断构造函数的属性是否在对象的原型链上,如果在,就返回属性是否可枚举用于检查给定的属性是否能够使用语句。

                 ## javascript对象原型成员详解 ##

ECMAScript 中的对象就是一组数据和功能的集合,对象可以通过 new 操作符后跟要创建的对象名称来创建。
var obj =  new Object( );   //在不传参数的情况下省略号可以不写但不推荐
由 Object 类型为基础创建出的 obj 实例对象,可以使用 Object类型上所具有的任何属性和方法。
Object 的每个创建出来的实例都有以下的属性和方法,这些属性和方法存在于它的原型对象中(Object.prototype)

Constructor: 构造函数,保存着用于创建当前对象的函数,此时的构造函数为 Object()

hasOwnProperty(propertyName):有自己的属性,用于检查给定的属性是否在当前的对象的实例中存在 (而不是在实例的原型中,和 in 运算符有差别)。

语法: 对象.hasOwnProperty("属性");

作用: 判断该属性是否是对象自身的,如果是则返回 true,不然就返回 false

in 运算符:判断属性能否被对象访问到,不管属性是对象自身的,还是在原型链上的,只要能够访问到,就返回 true,如果不能就返回 false。

3.isPrototypeOf(object): 是否是原型归属,用于检查传入的对象是否是传入对象的原型。(和 instanceof的作用一样,区别在于写法)

语法: 对象A.isPrototypeOf(对象B);

作用: 判断对象A是否在对象B的原型链上

instanceof:

语法: 对象 instanceof 构造函数

作用: 判断构造函数的 prototype 属性是否在对象的原型链上,如果在,就返回 true

4.propertyIsEnumerable(propertyName):属性是否可枚举:用于检查给定的属性是否能够使用 for-in 语句。

语法: 对象.propertyISEnumerable("属性");

作用: 判断属性是否可以遍历(只有属性是对象自身的并且属性可以遍历的时候才返回 true)

手动给对象的实例对象或者原型对象添加的属性默认都是可以遍历的,但是它原型对象上自带的成员默认是不可以遍历的。

那如何给对象添加一个不可遍历的属性呢?

这里可以使用 Object.defineProperty();

语法:Object.defineProperty(obj, prop, desc);

参数说明:

obj:指定的对象

prop: 所要添加的属性(字符串)    

desc:属性描述符,是个对象

举例说明一下:

Object.defineProperty(obj, "gender",{
    value: "female",        //value 给这个对象的该属性设置默认值
    enumerable: true,     //enumerable 设置属性是否可以遍历,true为可遍历
    writable: false        //writable 设置属性是否可以修改,true为可修改
})

5.tolocaleStrin: 返回对象的字符串表示,该字符串和执行环境的地区对应

6.toString:返回对象的字符串表示

7.valueOf:返回对象的字符串,数字或者布尔值表示,通常与toString()方法的返回值相同

额外提到的一点是 对象咋进行运算或者比较的时候,js内部会自动调用 valueOf && toString 这两个方法

调用规则:

 - 首先调用 valueOf 方法,尝试将对象转成简单数据类型,如果没有转成简单数据类型,则继续调用 toString
   方法,将对象转成字符串
 - 如果对象分别调用 valueOf  的方法和 toString 的方法,都没有转成简单数据类型,就会报错 
   
注意的是在 ECMAScript 中 Object是所有对象的而基础,因此所有的对象都具有这些基本属性和方法。
参考文献

javascript高级程序设计

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/98090.html

相关文章

  • javascript对象详解:__proto__和prototype的区别和联系

    摘要:当这步完成,这个对象就与构造函数再无联系,这个时候即使构造函数再加任何成员,都不再影响已经实例化的对象了。此时,对象具有了和属性,同时具有了构造函数的原型对象的所有成员,当然,此时该原型对象是没有成员的。 前言 本篇文章用来记录下最近研究对象的一些心得,做一个记录与总结,以加深自己的印象,同时,希望也能给正在学习中的你一点启发。本文适合有一定JavaScript基础的童鞋阅读。原文戳这...

    chavesgu 评论0 收藏0
  • JavaScript学习总结(五)原型原型详解

    摘要:原型对象内部也有一个指针属性指向构造函数实例可以访问原型对象上定义的属性和方法。在创建子类型的实例时,不能向超类型的构造函数中传递参数。 赞助我以写出更好的文章,give me a cup of coffee? 2017最新最全前端面试题 私有变量和函数 在函数内部定义的变量和函数,如果不对外提供接口,外部是无法访问到的,也就是该函数的私有的变量和函数。 function ...

    EscapedDog 评论0 收藏0
  • js原型和继承

    摘要:举例说明组合继承组合继承利用原型链借用构造函数的模式解决了原型链继承和类式继承的问题。示例组合式继承是比较常用的一种继承方法,其背后的思路是使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。 对js原型和继承的理解一直处于不懂-懂-不懂-懂-不懂。。。的无限循环之中,本来打算只是简单总结下js继承方式,可看了些网上的资料后,发现又不懂继承了。。。这篇文章只...

    Hujiawei 评论0 收藏0
  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你的“对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    李昌杰 评论0 收藏0
  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你的“对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    Lyux 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<