请不要使用 class,写一个 Person 构造函数,要求以下代码运行通过:
function Person(你来补全代码){
你来补全代码
}
let person = new Person('frank', 18)
person.name === 'frank' // true
person.age === 18 // true
person.sayHi() // 打印出「你好,我叫 frank」
let person2 = new Person('jack', 19)
person2.name === 'jack' // true
person2.age === 19 // true
person2.sayHi() // 打印出「你好,我叫 jack」
回答如下
function Person(name,age){
this.name =name
this.age =age
}
Person.prototype.sayHi = function(){console.log('你好,我叫' + this.name)}
请用 class 再实现一次上面的功能:
class Person{
constructor(name,age){
this.name =name
this.age =age
}
sayHi(){
console.log('你好,我叫' + this.name)
}
}
this用法
第一种
let person ={
name:'frank',
sayHi(){
console.log(`你好,我叫` +this.name)
}
}
person.sayHi()//你好,我叫frank
第二种
let person ={
name:'frank',
age:'18',
sayHi(){
console.log(`你好,我叫` +this.name + `,今年` + this.age +`岁`)
}
}
person.sayHi()
//你好,我叫frank,今年18岁
第三种
let person ={
name:'frank',
age:'18',
sayHi(){
console.log(`你好,我叫` +this.name + `,今年` + this.age +`岁`)
}
}
person.sayHi.call({name:'jack',age:19 })
//你好,我叫jack,今年19岁
person.sayHi.call(person)=== person.sayHi()
//推荐用前一种
每个函数都可以用this获取一个未知对象的引用