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 mode
console.log(object1.property1);
// expected 42
2.2 设置访问器属性
访问器属性不包含数据值,而是包含一度getter和setter函数,
因为自身不包含数据值,设置一个属性值通常会导致别的属性发生变化
而且不能直接定义,只能通过Object.defineProperty()来定义
var bValue = 38;
var o = {}; // Creates a new object
Object.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"