创建 JavaScript 对象
- 方法一:使用 Object 定义并创建对象的实例。
let person = new Object() person.name = 'John' // 添加 name 属性 console.log(typeof person) // object console.log(person.name) // John
- 方法二:字面量方式创建
let person = { name: 'John', age: function Age() { return 20 } } console.log(person.name) // John console.log(person.age()) // 20
- 方法三:使用函数来定义对象,然后创建新的对象实例。
function Person(name, age){ this.name = name this.age = age this.say = function(){ console.log(this.name + this.age) } } let person = new Person('John ',20) console.log(person.name) // John person.say() // John 20
在JavaScript中,this通常指向的是我们正在执行的函数本身,或者是指向该函数所属的对象(运行时)。
把方法添加到 JavaScript 对象
- 方法只不过是附加在对象上的函数。
在构造函数内部定义对象的方法:
function Person(name,age){ this.name = name this.age = age this.changeName = changeName function changeName(name){ this.name = name } } let person = new Person('John ',20) person.changeName('Mike') console.log(person.name) // Mike
prototype 原型对象
所有的 JavaScript 对象都会从一个 prototype(原型对象)中继承属性和方法。
Date 对象从 Date.prototype 继承。Array 对象从 Array.prototype 继承。Person 对象从 Person.prototype 继承。
添加属性
function Person(first, last, age){ this.firstName = first this.lastName = last this.age = age } Person.prototype.nationality = "中国" // 添加国籍属性 let person = new Person('张','三 ','20') console.log(person.nationality) // 中国
- 添加方法
function Person(first, last){ this.firstName = first this.lastName = last } Person.prototype.name = function(){ return this.firstName + this.lastName } let person = new Person('张 ','三') console.log(person.name()) //张 三
不积跬步无以至千里 不积小流无以成江海