// es5 原本的构造函数
function Phone (brand,price) {
this.brand = brand
this.price = price
}
// 添加方法
Phone.prototype.call = function () {
console.log('我可以打电话')
}
Phone.name = 'hahaha' //当前属性属于函数对象 统称静态成员
Phone.todo = function (){ //当前属性属于函数对象
console.log('666')
}
Phone.prototype.size = '5.5inch' //当前属性属于函数对象
let Huawei = new Phone('华为',5999)
console.log(Huawei)
// console.log(Huawei.name) //undefined
// console.log(Huawei.todo) //not a function
// console.log(Huawei.size) //5.5inch
// !! 函数对象与实例对象的属性是不相通的, 实例对象的属性 只有跟构造函数的原型属性是同的
// class 语法
class phone{
// 静态(static)属性 属于类,不属于构造方法
static name = '手机'
static change () {
console.log('我可以改变世界')
}
// 构造方法 ,名字 constructor 不能修改
constructor (brand,price){
this.brand = brand
this.price = price
}
// 方法必须使用该语法不支持 es5的对象完整形式
call () {
console.log('我可以打电话')
}
callname () {
console.log(this.name)
}
}
let onePlus = new phone("1+",5965)
console.log(onePlus) //和普通构造函数 一样
console.log(onePlus.name) //undefined
console.log(phone.name) //手机
console