内建对象

JavaScript this
解析器在调用函数每次都会向函数内部传递一个隐含的参数
这个隐含的参数就是this,this指向的是一个对象,
这个对象我们称为函数执行的上下文对象,
根据函数调用方式不同,this会指向不同的对象
总结this:
1.以函数的形式调用时,this永远都是window
2.以方法的形式调用是,this就是调用方法的那个对象

var name=“全部作用域中的变量name”;
function fun(){
console.log(this.name);
}
var obja={
name:“zhangsan”,
sayWord:fun
};
var objb={
name:“wangwu”,
sayWord:fun
};
fun();
//我们希望,调用fun方法的时候,他可以输出,对象的name属性
obja.sayWord();
objb.sayWord();

使用工厂方法创建对象
通过该方法可以大批量的创建对象 :

function creatPerson(name,age,gengder){ 
var obj=new Object(); 
obj.name=name; 
obj.age=age; 
obj.gender=gengder; 
obj.sayhello=function(){ 
console.log("大家好!我是"+this.name); 
} 
return obj; 
} 

var person1=creatPerson("小蓝",23,"女"); 
var person2=creatPerson("小绿",20,"女"); 
console.log(person1); 
person1.sayhello(); 
console.log(person2); 
person2.sayhello(); 

console.log(typeof person1); 
function createCat(name,age){ 
var obj=new Object(); 
obj.name=name; 
obj.age=age; 
obj.sayhello=function(){ 
console.log("主人您好啊!我是"+this.name); 
} 
return obj; 
}

使用工厂方法创建的对象,使用的构造函数都是Object
所以创建的对象都是Object这个类型
就导致我们无法区分出多种不同类型的对象

var cat1=createCat("小淘",4); 
var cat2=createCat("小白",2); 
console.log(cat1); 
console.log(cat2); 
cat2.sayhello(); 
console.log(typeof person1); 
console.log(typeof cat1);

使用instanceof 可以检查一个对象是否是一个类的实例
语法:对象 instanceof 构造函数
如果是实例,则返回true,否则返回false

对this的情况进行总结:
1.当以函数的形式调用时,this就是window对象
2.当以方法的形式调用时,this就是调用方法的这个对象
3.当以构造函数的形式调用时,this就是新创建的对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值