博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript对象原型成员详解
阅读量:7125 次
发布时间:2019-06-28

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

## javascript对象原型成员详解 ##ECMAScript 中的对象就是一组数据和功能的集合,对象可以通过 new 操作符后跟要创建的对象名称来创建。var obj =  new Object( );   //在不传参数的情况下省略号可以不写但不推荐由 Object 类型为基础创建出的 obj 实例对象,可以使用 Object类型上所具有的任何属性和方法。Object 的每个创建出来的实例都有以下的属性和方法,这些属性和方法存在于它的原型对象中(Object.prototype)
  1. Constructor: 构造函数,保存着用于创建当前对象的函数,此时的构造函数为 Object()
  2. 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高级程序设计

转载地址:http://cpeel.baihongyu.com/

你可能感兴趣的文章
java Class对象
查看>>
centos 5.5下执行rpm报错
查看>>
H3C--nat,dhcp,内部服务器
查看>>
Unity3d中封装单例模式,Singleton
查看>>
Android布局之weight属性解析
查看>>
SpringMVC对静态资源进行缓存
查看>>
我的友情链接
查看>>
js中的this关键字详解
查看>>
简单的处理链-java
查看>>
安装Genymotion报Unable to load VirtualBox engine错误解决办法
查看>>
使用JDK自带jvisualvm监控tomcat
查看>>
strstr匹配
查看>>
京东金融大数据竞赛猪脸识别(4)-方法选取
查看>>
LVS DR配置和keepalived+LVS
查看>>
Format a Sentence-格式化输出句子
查看>>
crontab详解
查看>>
object- and mysql-based session-handler
查看>>
Lantek软件的单机版与网路版安装步骤
查看>>
ELK的安装配置使用
查看>>
C语言设计模式-单例模式
查看>>