首页 > 编程笔记 > JavaScript笔记 > JS面向对象编程
阅读:52
JS hasOwnProperty()方法:检测一个属性是否是对象的自有属性
JavaScript hasOwnProperty() 方法是 Object 的原型方法(也称实例方法),它定义在 Object.prototype 对象之上,所有 Object 的实例对象都会继承 hasOwnProperty() 方法。
hasOwnProperty() 方法用来检测一个属性是否是对象的自有属性,而不是从原型链继承的。如果该属性是自有属性,那么返回 true,否则返回 false。换句话说,hasOwnProperty() 方法不会检测对象的原型链,只会检测当前对象本身,只有当前对象本身存在该属性时才返回 true。
例如,在下面自定义类型中,this.name 就表示对象的自有属性,而原型对象中的 name 属性就是继承属性。
hasOwnProperty() 的语法格式如下:
返回值:返回一个布尔值。如果 propertyName 是自有属性,那么返回 true,否则返回 false。
hasOwnProperty() 方法用来检测一个属性是否是对象的自有属性,而不是从原型链继承的。如果该属性是自有属性,那么返回 true,否则返回 false。换句话说,hasOwnProperty() 方法不会检测对象的原型链,只会检测当前对象本身,只有当前对象本身存在该属性时才返回 true。
例如,在下面自定义类型中,this.name 就表示对象的自有属性,而原型对象中的 name 属性就是继承属性。
function F() { //自定义数据类型 this.name = "自有属性"; } F.prototype.name = "继承属性";
hasOwnProperty() 的语法格式如下:
object.hasOwnProperty(propertyName);
参数说明:propertyName 参数表示要检测的属性名称。返回值:返回一个布尔值。如果 propertyName 是自有属性,那么返回 true,否则返回 false。
示例1
针对上面的自定义类型,可以实例化对象,然后判定当前对象调用的属性 name 是什么类型。var f = new F(); //实例化对象 console.log(f.hasOwnProperty("name")); //返回true,说明当前调用的 name是自有属性 console.log(f.name); //返回字符串“自有属性”凡是构造函数的原型属性(原型对象包含的属性),都是继承属性,使用 hasOwnProperty() 方法检测时,都会返回 false。但是,对于原型对象本身来说,这些原型属性又是原型对象的自有属性,所以返回值又是 true。
示例2
在下面示例中,演示了 toString() 方法对于 Date 对象来说是继承属性,但是对于 Date 构造函数的原型对象来说,则是它的自有属性。var d = Date; console.log(d.hasOwnProperty("toString")); //返回false,说明toString()是Date的自有属性 var d = Date.prototype; console.log(d.hasOwnProperty("toString")); //返回true,说明toString()是Date.prototype属性hasOwnProperty() 方法只能判断指定对象中是否包含指定名称的属性,无法检查对象原型链中是否包含某个属性,所以能够检测出来的属性必须是对象成员。
示例3
下面示例演示了 hasOwnProperty() 方法所能检测的属性范围。var o = { //对象直接量 o1 : { //子对象直接量 o2 : { //孙子对象直接量 name : 1 //孙子对象直接量的属性 } } }; console.log(o.hasOwnProperty("o1")); //返回true,说明o1是o的自有属性 console.log(o.hasOwnProperty("o2")); //返回false,说明o2不是o的自有属性 console.log(o.o1.hasOwnProperty("o2")); //返回true,说明o2是o1的自有属性 console.log(o.o1.hasOwnProperty("name")); //返回false,说明name不是o1的自有属性 console.log(o.o1.hasOwnProperty("name")); //返回true,说明name不是o2的自有属性
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频