1. javascript 对象

JavaScript 中的所有事物都是对象:字符串、数字、数组、日期,等等。

在 JavaScript 中,对象是数据(变量),拥有属性和方法。

属性和方法

属性是与对象相关的值。方法是能够在对象上执行的动作。
在面向对象的语言中,属性和方法常被称为对象的成员。

2. 创建 javascript 对象

方法一:

let Person = new Object(); // 声明一个空对象
1

方法二:

let Person = {};   // 声明一个空对象
1

3. 对象属性及对象方法

JavaScript 属性 属性指的是与 JavaScript 对象相关的值。

JavaScript 对象是无序属性的集合。

属性通常可以被修改、添加和删除,但是某些属性是只读的。

访问语法 objectName.propertyName

JavaScript 方法

方法是存储为对象属性的函数。

访问语法 objectName.methodName()

let Person = new Object();
Person.name = "麋鹿鲁哟"  //设置对象属性
Person.age = 22
Person.getDate = function(){  //设置对象方法
  return new Date();
}

console.log(Person) // {name: "麋鹿鲁哟", age: "22"}

console.log(Person.name)  // 麋鹿鲁哟      //访问对象属性
console.log(Person.getDate()) //输出当前时间   //访问对象方法

delete Person.age  // delete 关键词从对象中删除属性
1
2
3
4
5
6
7
8
9
10
11
12
13

PS:对象的名称,对大小写敏感。

4. 对象访问器(get、set)

为什么使用 Getter 和 Setter?

  • 它提供了更简洁的语法
  • 它允许属性和方法的语法相同
  • 它可以确保更好的数据质量
  • 有利于后台工作

JavaScript Getter(get 关键词)

var Person = {
  name: "麋鹿鲁哟",
  age : 22,
  get lang() {
    return this.age;
  }
};
console.log(Person.lang)  // 22 
1
2
3
4
5
6
7
8

JavaScript Setter(set 关键词)

var Person = {
  name: "麋鹿鲁哟",
  age : 22,
  set lang(lang) {
    this.age = lang;
  }
};
// 使用 setter 来设置对象属性:
Person.lang = 3
console.log(Person.age)  // 3
1
2
3
4
5
6
7
8
9
10

5. 对象构造器

function Person(name,age){
  this.name = name;
  this.age = age;
}
1
2
3
4

函数 Person() 就是对象构造器函数。

通过 new 关键词调用构造器函数可以创建相同类型的对象:

var me = new Person("麋鹿鲁哟",22);
1

this 关键词

在 JavaScript 中,被称为 this 的事物是代码的“拥有者”。

this 的值,在对象中使用时,就是对象本身。

在构造器函数中,this 是没有值的。它是新对象的替代物。 当一个新对象被创建时,this 的值会成为这个新对象。

请注意 this 并不是变量。它是关键词。您无法改变 this 的值。

6. JavaScript 对象原型

原型继承

所有 JavaScript 对象都从原型继承属性和方法。

  • 日期对象继承自 Date.prototype。
  • 数组对象继承自 Array.prototype。
  • Person 对象继承自 Person.prototype。
  • Object.prototype 位于原型继承链的顶端:
  • 日期对象、数组对象和 Person 对象都继承自 Object.prototype。

prototype 属性

JavaScript prototype 属性允许您为对象构造器添加新属性、方法

function Person(name,age){
  this.name = name;
  this.age = age;
}
Person.prototype.github = "https://github.com/miluluyo";
1
2
3
4
5

7. ES5 对象方法

代码 详解
Object.defineProperty(object, property, descriptor) 添加或更改对象属性
Object.defineProperties(object, descriptors) 添加或更改多个对象属性
Object.getOwnPropertyDescriptor(object, property) 访问属性
Object.getOwnPropertyNames(object) 以数组返回所有属性
Object.keys(object) 以数组返回所有可枚举的属性
Object.getPrototypeOf(object) 访问原型
Object.preventExtensions(object) 阻止向对象添加属性
Object.isExtensible(object) 如果可将属性添加到对象,则返回 true
Object.seal(object) 防止更改对象属性(而不是值)
Object.isSealed(object) 如果对象被密封,则返回 true
Object.freeze(object) 防止对对象进行任何更改
Object.isFrozen(object) 如果对象被冻结,则返回 true

7. prototype 继承

语法

子类.prototype = new 父类()
1

所有的 JavaScript 对象都会从一个 prototype(原型对象)中继承属性和方法。

指向了一个对象,这个对象正式调用该构造函数而创建的实例的原型

proto

__proto__这是每一个 javascript 对象( null 除外)都具有的属性,这个属性会指向该对象的原型

8. Number 对象

编码 详解
toExponential() 可把对象的值转换成指数计数法。
toFixed() 可把 Number 四舍五入为指定小数位数的数字。
toPrecision() 方法可在对象的值超出指定位数时将其转换为指数计数法。
toString() 可把一个逻辑值转换为字符串,并返回结果。
valueOf() 可返回 Boolean 对象的原始值。

9. Math (算数) 对象

执行常见的算数任务。

编码 详解
abs(x) 返回 x 的绝对值。
acos(x) 返回 x 的反余弦值。
asin(x) 返回 x 的反正弦值。
atan(x) 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。
atan2(y,x) 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。
ceil(x) 对数进行上舍入。
cos(x) 返回数的余弦。
exp(x) 返回 Ex 的指数。
floor(x) 对 x 进行下舍入。
log(x) 返回数的自然对数(底为e)。
max(x,y,z,...,n) 返回 x,y,z,...,n 中的最高值。
min(x,y,z,...,n) 返回 x,y,z,...,n中的最低值。
pow(x,y) 返回 x 的 y 次幂。
random() 返回 0 ~ 1 之间的随机数。
round(x) 四舍五入。
sin(x) 返回数的正弦。
sqrt(x) 返回数的平方根。
tan(x) 返回角的正切。