javaScript(this)

目录

this

使用工厂方法创建对象

构造函数

instanceof 

语法


this

解析器在调用函数,每次都会函数内部传递进一个隐含的参数,每个隐含的参数就是this,this 指向的是一个对象,这个对象我们称为函数执行的上下文对象。

根据函数的调用方式的不同,this 会指向不同的对象

  1. 以函数的形式调用时,this永远都是window
  2. 以方法的形式调用时,this就是调用方法的那个对象
function fun(){
console.log(this.name);
}

//创建一个对象
var obj={
name:"孙悟空";
sayName:fun
};

var obj2={
name:"沙和尚",
sayName:fun
};

//fun();//调用函数--window
//obj.sayName();//调用方法---obj

//console.log(obj.sayName==fun);

var name="全局的name属性";
fun();//以函数的形式调用,this是window

obj.sayName();//以方法的形式调用,this是obj

补充

var name="全局";

function fun(){
console.log(this.name);
}

var obj={
name:"孙悟空",
sayName:fun
};

var obj2={
name:"沙和尚",
sayName:fun
};

obj.sayName();
//obj2.sayName();

使用工厂方法创建对象

通过该方法可以大批量的创建对象

function creatPerson(){
//创建一个对象
var obj=new Object();
//向对象中添加属性
obj.name=name;
obj.age=age;
obj.gander=gender;
obj.sayName=function(){
alert(this.name);
};

return obj;
}

var obj2=createPerson("猪八戒",28,"男");
console.log(obj2);
obj2.sayName();



构造函数

  • 创建方式和普通函数没有区别,不同的是构造函数习惯上首字母大写
  • 与普通函数的区别就是调用方式的不同,普通韩叔叔直接调用,构造函数需要使用new 关键字来调用

执行流程

  1. 立刻创建一个对象
  2. 将新建的对象设置为函数中this
  3. 逐行执行函数中的代码
  4. 将新建的对象作为返回值返回

使用同一个构造函数创建的对象,我们称为一类对象

function Person(name,age,gender){
this.name=name;
this.age=age;
this.gender=gender;
this.sayName=functionn(){
alert(this.name);
}
}
var per=new Person("孙悟空",18,"男");
console.log(per);

console.log(per instanceof Person);//true

console.log(dog instanceof Person);//false

console.log(dog instanceof Person);//true

instanceof 

 使用instanceof可以检查一个对象是否满足一个类的实例

语法

对象  instanceof  构造函数

如果是,返回true ,否则返回false

注意:所以的对象都是Object的子代,所以instanceof 后面写Object都是true

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值