资讯专栏INFORMATION COLUMN

理解Javascript对象(属性探测,删除属性,属性枚举)

vpants / 2379人阅读

摘要:属性探测在大多数情况下,操作符是探测对象中属性是否存在的最好的途径。然而在某些情况下,可能希望仅当一个属性是自有属性时才检查其是否存在。删除属性使用操作符来彻底移除对象的一个属性。循环同时也会遍历原型属性而只返回自有实例属性。

属性探测

在大多数情况下,in操作符是探测对象中属性是否存在的最好的途径。然而在某些情况下,可能希望仅当一个属性是自有属性时才检查其是否存在。in 操作符会检查自有属性和原型属性,所以不得选择另一条途径:所有的对象都拥有hasOwnProperty()方法。

var person1 = {
    name: "Nicholas",
    sayName: function () {
        console.log(this.name);
    }
};

console.log("name" in person1); // true
console.log(person1.hasOwnProperty("name")); // true

console.log("toString" in person1); // true
console.log(person1.hasOwnProperty("toString")); // false
删除属性

使用delete操作符来彻底移除对象的一个属性。

var person1 = {
    name: "Nicholas"
};

console.log("name" in person1);

delete person1.name; // true
console.log("name" in person1); // false
console.log(person1.name); // undefined
属性枚举

如果只需要获取一个对象的属性列表以备程序将来使用,ECMAScript 5 引入了Object.keys()方法,它可以获取可枚举属性的名字的数组。

for in 循环返回的和Object.keys()返回的可枚举属性有一个区别。for in循环同时也会遍历原型属性而Object.keys()只返回自有(实例)属性。

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

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

相关文章

  • 深入了解JavaScript对象(2)--函数、对象

    摘要:属性是函数独有的,表明该对象可以被执行。李四张三张三李四李四李四张三属性探测由于属性可以在任何时候添加,所以有时候就有必要检查对象是否已有一个属性。张三属性特征通过方法来改变属性特征。 1.[[Call]]属性是函数独有的,表明该对象可以被执行。由于仅函数拥有该对象,ECMAScript定义typeof操作符对任何具有[[Call]]属性的对象返回function。 注:某些浏览器曾经...

    darkerXi 评论0 收藏0
  • JavaScript面向对象精要》读书笔记

    摘要:解除引用的最佳手段是将对象变量设置为。字面形式允许你在不需要使用操作符和构造函数显示创建对象的情况下生成引用值。函数就是值可以像使用对象一样使用函数因为函数本来就是对象,构造函数更加容易说明。 JavaScript(ES5)的面向对象精要 标签: JavaScript 面向对象 读书笔记 2016年1月16日-17日两天看完了《JavaScript面向对象精要》(参加异步社区的活动送...

    GitCafe 评论0 收藏0
  • JavaScript】面向对象

    摘要:一面向对象概述面向对象是什么是使用一系列对象相互协作软件设计,目的是在编程中促进更好灵活性和可维护性,凭借对模块化重视,面向对象代码开发更简单,容易理解面向对象的有主要特征是封装继承多态封装封装主要用于叙述对象中所包含封装的内容,由两部分组 JS(JavaScript)一.面向对象;概述; 面向对象是什么; 是使用一系列对象相互协作软件设计,目的是在编程中促进更好灵活性和可维护性,凭借...

    gself 评论0 收藏0
  • JavaScript对象属性

    摘要:尽管的右操作数是构造函数,但计算过程实际是检测了对象的继承关系。通过创建的对象使用构造函数的属性作为它们的原型。 JavaScript之对象属性 Object.create()继承 ECMAScript 5定义了一个名为Object.create()的方法,它创建一个新对象, 其中第一个参数是这个对象的原型。Object.create()提供第二个可选参数,用以对对象的属性进行进一步描...

    gekylin 评论0 收藏0
  • 理解Object.defineProperty的作用

    摘要:对象是由多个名值对组成的无序的集合。对象中每个属性对应任意类型的值。目标属性所拥有的特性返回值传入函数的对象。给对象的属性添加特性描述,目前提供两种形式数据描述和存取器描述。兼容性在下只能在对象上使用,尝试在原生的对象使用会报错。 对象是由多个名/值对组成的无序的集合。对象中每个属性对应任意类型的值。定义对象可以使用构造函数或字面量的形式: var obj = new Object; ...

    yexiaobai 评论0 收藏0

发表评论

0条评论

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