js-构造函数及与原理

自定义构造函数基本使用 大驼峰


function Teacher() {
  // console.log(this);
  this.name = '张三',
  this.smoke = function () {
    console.log('抽了一只烟');
  }
}

// Teacher()   // 如果只执行的话,this指向的是window

// 实例化后的this指向实例化的对象
var tea1 = new Teacher()
var tea2 = new Teacher()
tea1.name = '李四'
// 打印的name是不一样的,互不影响
// 构造函数的复用性高
console.log(tea1,tea2);

  构造函数接受参数

// 构造函数接受参数
function Teacher(name,age) {
  this.name = name,
  this.age = age,
  this.smoke = function () {
    console.log('抽了一只烟');
  }
}

// Teacher()   // 如果只执行的话,this指向的是window

// 实例化后的this指向实例化的对象
var tea1 = new Teacher('张三',18)
var tea2 = new Teacher('李四',28)
console.log(tea1,tea2);

构造函数接收一个对象做为参数 (参考VUE)

function Teacher(opt) {
  this.name = opt.name;
  this.age = opt.age;
  this.smoke = function () {
    console.log('抽了一只烟');
  }
}

// Teacher()   // 如果只执行的话,this指向的是window

// 实例化后的this指向实例化的对象
var tea1 = new Teacher({
  name: '张三',
  age: 18
})
var tea2 = new Teacher({
  name: '李四',
  age: 38
})
console.log(tea1,tea2);

构造函数的原理

new关键字做了什么?

新建了一个空对象,这个原型对象指向构造函数的prototype,执行构造函数后,返回这个对象.

function Cart(color, brand) {
  this.color = color; //都是在this上保存的
  this.brand = brand;
  // 构造函数隐式return 一个this
  // 如果你return 引用值是有效的, return 原始值是无效的.
  // return {}  // 结果是return {}
  // return 90  // 结果是return this
}
var car1 = new Cart('red','BYD')
console.log(car1);

// GO = { 页面加载全局
//     1.Cart:function(){} ,// 执行函数
//     2.car1: { color: color, brand: brand }
// }

// AO = {
//    1.看到new,会在AO保存一个this对象.上边的是在this里
//      this: { color: color, brand: brand }
// }

// new 是为了改变this指向的.
// 1.保存一个空的this对象
// 2.把构造函数this东西写到创建的空this里
// 3.隐式加了一个 return this

// 创建一个空对象,  功能就跟new是一样的
var my = {}
my.color = 'red'
return my
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值