1、创建对象

创建对象的两种方法:

使用Object构造函数

var person2 = new Object();
person2.name="Qian";

使用对象的字面形式

var person1={name:"Qian"
};

对象添加以及修改时JavaScript会在对象上调用[[Put]][[Set]]方法

2、属性探测

2.1、使用“in”操作符

console.log("name" in person1)/*true*/

2.2、使用“hasOwnProperty()”方法

console.log(person1.hasOwnProperty("name"))/*true*/

3、删除属性

var person1={name:"Qian"
};
delete person1.name;
console.log(person1.hasOwnProperty("name"))/*false*/

4、枚举属性

for-in:可枚举属性的内部特征都被设置为true,for-in循环会枚举一个对象所有的可没经验属性并将属性名赋给一个变量

var person1 = {name:"Qian",age:12
}
for(var item in person1){console.log(item)/*name    age*/
}

Object.keys():获取一个对象的属性列表已备程序使用

var person1 = {name:"Qian",age:12
};
var properties = Object.keys(person1);
for(var i=0;i<properties.length;i++){console.log(i)
}

5、属性类型

数据属性:包含一个

访问器属性:包含一个函数

6、属性特征

通用特征:

是否可遍历:[[Enumerable]]

是否可配置:[[Configurable]]---------->可以用delete删除

修改属性特征:Object.defineProperty()方法

例:修改某个对象属性使其变成不可以枚举且不可配置

Object.defineProperty(person1,"name",{enumerable:false,configurable:false
});
console.log(person1.propertyIsEnumerable("name"))/*false*/

数据属性特征:

[[Value]]:创建对象时该特征自动赋值

[[Writable]]:布尔值,默认可以写

定义完整的数据属性:Object.defineProperty()

var person1 = {}
Object.defineProperty(person1,"name",{value:"Qian",enumerable:true,configurable:true,writable:true
})

访问器属性特征:

[[Get]]

[[Set]]

定义多重属性

Object.defieProperties()方法

var person1 = {}
Object.defineProperties(person1, {_name:{value: "Qian",enumerable: true,configurable: true,writable: true},name:{get:function () {console.log("Reading me")}}
})

获取属性特征:

Object.getOwnPropertyDescriptor()方法

var person1 = {name:"Qian"
}
var deseciptor = Object.getOwnPropertyDescriptor(person1,"name");
console.log(deseciptor.enumerable)/*true*/

7、禁止修改对象

[[Extensible]]:布尔值,设置为false,禁止新属性的添加

7.1、禁止扩展

方法:使用Object.preventExtensions()

检测方法:使用Object.isExtensible()

var person1 = {name:"Qian"
}
Object.preventExtensions(person1);
console.log(Object.isExtensible(person1))/*false*/

7.2、封印对象

方法:Object.seal()

检测方法:使用Object.isSealed()

var person1 = {name:"Qian"
};
Object.seal(person1);
console.log(Object.isSealed(person1))/*true*/

7.3、冻结对象

方法:Object.freeze()

检测方法:Object.isFrozen()

var person1 = {name:"Qian"
};
Object.freeze(person1);
console.log(Object.isFrozen(person1))/*true*/

总结:

1、将属性视为键值对,对象视为属性的哈希表有助于理解JavaScript对象。

2、你可以用点好或者中括号访问对象的属性

3、用in操作符检测某个属性是否存在

4、属性的两种类型:数据属性和访问器属性

5、属性的特征

6、锁定对象的3中方式

转载于:https://www.cnblogs.com/QianBoy/p/8859036.html

面向对象精要-理解对象相关推荐

  1. Js面向对象的程序设计——理解对象

    Js面向对象的程序设计 Js面向对象的程序设计 理解对象 属性类型 Js面向对象的程序设计 理解对象 示例 : var person=new Object(); person.name="N ...

  2. 面向对象的程序设计——理解对象

    面向对象的程序设计 ECMA-262 把对象定义为:无须属性的集合,其属性可以包含基本值.对象或者函数. 理解对象 var person = new Object(); //创建对象 person.n ...

  3. 如何更准确的理解面向对象编程中的对象

    现在面向对象的编程思想已经有好长的历史了,我们可能天天都在运用.我们应该如何理解它呢?100个人可能有100种答案,因为它太容易理解了,同时也是最难真正理会其含义的.理解好理解,但在实际的编程当中我们 ...

  4. 高程 第6章面向对象的程序设计 6.1 理解对象

    面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象. ECMAScript中没有类的概念,因此它的对象也与基于类 ...

  5. Java入门姿势【面向对象:1】啥事面向对象、类和对象如何理解

    面向对象是编程开发的一种编程范式. 这次我们来详细了解一下Java面向对象,面向对象的思想已经涉及到软件开发的各个方面,如:面向对象的分析,面向对象的设计.以及我们经常说的面向对象的编程实现 其余的一 ...

  6. 面向对象的程序设计1 理解对象—— JS学习笔记2015-7-4(第75天)

    面向对象的程序设计一-- 理解对象 转载于:https://www.cnblogs.com/zhangxg/p/4621520.html

  7. js面向对象的程序设计 --- 上篇(理解对象)

    前言 ECMAScript中没有类的概念,因此它们的对象与基于类的语言中的对象有所不同. ECMA-262把对象定义为:"无序的集合属性,其属性可以包含基本值,对象或者函数".正因 ...

  8. 《JavaScript面向对象精要》读书笔记

    JavaScript(ES5)的面向对象精要 标签: JavaScript 面向对象 读书笔记 2016年1月16日-17日两天看完了<JavaScript面向对象精要>(参加异步社区的活 ...

  9. 《JavaScript面向对象精要》——第1章 原始类型和引用类型1.1 什么是类型

    本节书摘来自异步社区<JavaScript面向对象精要>一书中的第1章,第1.1节,作者:[美]Nicholas C. Zakas 译者: 胡世杰 更多章节内容可以访问云栖社区" ...

最新文章

  1. 智慧城市锁定创新,智能AI助力智慧健康
  2. OpenKruise v0.8.0 版本发布:K8s 社区首个规模化镜像预热能力
  3. spark源码编译记录
  4. CSS干货直击:腾讯无边界访问控制体系建设
  5. ckeditor 图片上传_关于上传中国鸟类图库和哺乳动物图库物种数量及称号的最新规定...
  6. 自定义 URL Scheme 完全指南
  7. 谈谈JAVA工程狮面试中经常遇到的面试题目------什么是MVC设计模式
  8. 【最快人脸检测模型开源】libfacedetection开源
  9. ganlgia-rrdcached
  10. 论文绘图神器来了:哈佛博士后开源一行代码绘制不同期刊格式图表
  11. matlab 菲涅尔衍射,基于Matlab及菲涅尔衍射仿真.doc
  12. python课程计算bmi_Python第十一课 计算体脂率1.0
  13. 各位技术大牛们的逆袭集锦!屌丝们都看过来!
  14. 如何结交阿里P9,腾讯T4这样的大佬?
  15. matlab2018a出现error8怎么办
  16. html之div整体缩小,如何整体放大或缩小div元素
  17. 云ERP来的正是时候!
  18. Java DES 加密解密
  19. 细思极恐的“25号宇宙实验”的心理学启示:过于富足+缺乏边界=沉沦与毁灭?
  20. 芯片的设计流程和流片成本

热门文章

  1. Xcode 新项目删除 storyboard 文件
  2. C语言中用栈实现进制转换,利用栈实现进制转换问题
  3. python type help copyright_Python关于import的实验(8)__init__.py文件内部代码的执行以及内部的导入和内部的变量...
  4. jsp java 分离,java与jsp页面的字符串拼接和拆分
  5. Linux 面试最高频的 5 个基本问题!
  6. 为什么下一个十年的主战场在 Serverless?
  7. Python中字符串的介绍以及常见操作
  8. 文档的管理计算机,如何使用FTP自动同步备份电脑文件数据?
  9. 计算机应用基础(本)实训任务1,计算机应用基础(本)实训任务1-2.pdf
  10. 电脑删除linux系统,我的电脑现在装有XP和Linux两个系统,现在想删除Linux系统,开机不用选直接进入XP。不知怎么做??...