- 使用函数工厂创建对象,通过参数传递对象定制的数据,内部返回包含属性和方法的对象
//函数工厂创建
function user(name,age){
return {
name,
age,
show(){
console.log(`${name} ${age}`)
}
}
}
//创建实例
const xiamu=user('xiamu',18)
xiamu.show()
const fox=user('fox',188)
fox.show()
- 使用构造函数创建对象,构造函数默认返回this,其指向生成的对象,此时如果对象函数赋值变量,内部this指向Window
//构造函数创建
function User(name,age){
this.name=name
this.age=age
console.log(this+'000')
}
User.prototype.show=function(){
console.log(this+"000")
console.log(`${this.name} ${this.age}`)
}
//创建实例
const xiamu=new User('xiamu',18)
xiamu.show()
const fox=new User('fox',188)
fox.show()
//如果对象函数赋值为变量,内部this将指向Winnow。正常情况下this指向的是当前对象
const showF=fox.show
//console.log(showF()+'==')
- 使用内部构造函数(如Number Date Function RegExp等)创建对象,其生成对象可通过valueOf获取对应的值
//内部构造函数创建对象
const date=new Date() //最常用的
console.log(date.valueOf()) //时间戳 用来刷新
console.log(Date.now())
const num=Number(1)
console.log(num.valueOf())
const reg=new RegExp(/\d+/)
console.log(reg.test('11'))
const fun=new Function('name','age',`
this.name=name
this.age=age
this.show=function(){
console.log(this.name +'=='+this.age)
}
`)
const func=new fun('xiaomu',28)
console.log(func.valueOf())
func.show()
网友评论