1 概念
面向对象(oo)语言通常有类的概念,同过类可创建任意多个具有相同属性和方法的对象
之前es中没有类的概念,es6之后才有类的概念
es中的对象指的是一组无序属性的集合,属性可以包含基本值、对象或函数
每个对象都是基于一个引用类型创建的,既可以是原生类型,也可以是自定义类型
ECMAScript 规范明确定义了这样的一个概念:对象是零到多个的属性的集合。
In ECMAScript, an object is a collection of zero or more properties.
比如
let obj1 = new Object(); obj1.name =”tom” let obj2 = new Object()
或
function Person(name){ this.name = naem } let person1 = new Person(“tom”) let person2 = new Person(“keven”)
2 属性类型
对象的属性在创建时都会携带一些特性值,这些特性值只能在内部访问,
可以这些特性值把属性分为两种:数据属性 和 访问器属性
可以通过设置这些特性值来创建或修改属性
2.1 设置数据属性
const object1 = {};Object.defineProperty(object1, 'property1', {configurable: true,enumerable: true,value: 42,writable: false});object1.property1 = 77;// throws an error in strict modeconsole.log(object1.property1);// expected 42
2.2 设置访问器属性
访问器属性不包含数据值,而是包含一度getter和setter函数,
因为自身不包含数据值,设置一个属性值通常会导致别的属性发生变化
而且不能直接定义,只能通过Object.defineProperty()来定义
var bValue = 38;var o = {}; // Creates a new objectObject.defineProperty(o, 'b', {// Using shorthand method names (ES2015 feature).// This is equivalent to:// get: function() { return bValue; },// set: function(newValue) { bValue = newValue; },get() { return bValue; },set(newValue) { bValue = newValue; },enumerable: true,configurable: true});o.b; // 38
2.3 更多参考
极客时间: 1 in 1..constructor:这行代码的结果,既可能是true,也可能是false
3 创建对象
3.1 new 类
let obj1 = new Object();obj1.name ="tom"
