关于JavaScript对象的所有属性和方法
这篇文章记录了所有Object 内置的对象属性和方法。
任何不属于原始类型(字符串、数字、布尔值、符号、空或未定义)的值都是一个对象。即使是数组或函数也是,在引擎盖下的对象。
一个object 值可以使用对象字面语法来生成。
const person = {}
typeof person //object
使用Object 全局函数。
const person = Object()
typeof person //object
或使用对象构造器。
const person = new Object()
typeof person //object
另一种语法是使用Object.create() 。
const car = Object.create()
你可以用这种语法来初始化对象的属性。
const person = {
age: 36,
name: 'Flavio',
speak: () => {
//speak
}
}
const person = Object({
age: 36,
name: 'Flavio',
speak: () => {
//speak
}
})
const person = new Object({
age: 36,
name: 'Flavio',
speak: () => {
//speak
}
})
所有这些方式基本上都是等价的,因为它们都能让你访问我下面要列出的方法。
你也可以在一个大写字母的函数前使用new 关键字来初始化一个对象。这个函数可以作为该对象的构造函数。在那里,我们可以初始化我们收到的作为参数的参数,以设置对象的初始状态。
function Car(brand, model) {
this.brand = brand
this.model = model
}
我们用以下方法初始化一个新的对象
const myCar = new Car('Ford', 'Fiesta')
myCar.brand //'Ford'
myCar.model //'Fiesta'
对象有属性。每个属性都有一个名称和一个值。
你可能认为一个对象基本上是一个地图,或字典,数据结构,你会是正确的。
一个属性的值可以是任何类型,这意味着它甚至可以是一个对象,因为对象可以嵌套其他对象。
当一个属性值是一个函数时,我们称它为方法。
对象可以从其他对象中继承它们的属性,当我们谈论继承时,我们会详细地看到这一点。
对象总是通过引用来传递。
如果你给一个变量分配了另一个变量的相同值,如果它是一个原始类型,如数字或字符串,它们是通过值传递的。
let age = 36
let myAge = age
myAge = 37
age //36
const car = {
color: 'blue'
}
const anotherCar = car
anotherCar.color = 'yellow'
car.color //'yellow'
内置的对象属性
Object对象有2个属性
length总是等于1prototype这指向Object prototype对象:所有其他对象都继承自该对象。更多信息请查看原型继承的帖子。
静态方法
我们把方法分为静态方法和实例方法。静态方法是直接在Object 。实例方法是在一个对象实例上调用的(an 对象)。
静态方法是为在同一空间工作的函数提供一个命名空间的好方法。通过这种方式,我们没有全局函数,但所有的函数都在Object 全局对象下命名。
Object.assign()*ES2015Object.create()Object.defineProperties()Object.defineProperty()Object.entries()*ES2017Object.freeze()Object.getOwnPropertyDescriptor()Object.getOwnPropertyDescriptors()Object.getOwnPropertyNames()Object.getOwnPropertySymbols()Object.getPrototypeOf()Object.is()*ES2015Object.isExtensible()Object.isFrozen()Object.isSealed()Object.keys()Object.preventExtensions()Object.seal()Object.setPrototypeOf()*ES2015Object.values()