instanceof、isPrototypeOf()、hasOwnProperty()、in知识点总结

一、instanceof检测对应的数据类型(是否为对应类所产生的实例化对象),如果是简单数据类型(数值,字符,布尔值),必须使用new类来创建才能检测成功,下面举例说明:

var obj = {
	name : "张三"
}
var r = obj instanceof Object //输出true

var num = 1 //简单模式创建num
var r = num instanceof Number  //输出false
var num = new Number(1) //new实例化创建一个num
var r = num instanceof Number  //输出true

二、isPrototypeOf()是否是通过指定的构造函数创建处理的函数(原型上的方法)

function Student(name){
	this.name = name
}
var s1 = new Student("张三")
var result1 = Student.isPrototypeOf(s1) //输出false
var result2 = Student.prototype.isPrototypeOf(s1)  //输出true

三、hasOwnProperty() 检测当前属性是否属于构造函数

function Student(){
			this.name = "张三"
			this.age = 21
		}
Student.prototype.score = 100
var s = new Student()
var r1 = s.hasOwnProperty("name") //输出true
var r2 = s.hasOwnProperty("score") //score是在Student构造函数的原型上,输出false

四、in 判断当前对象是否具有对应属性 key in 对象 不管key是在构造函数里的还是原型上的,只要存在,都返回true

function Student(){
	this.name = "张三"
	this.age = 21
}
Student.prototype.score = 100
var s = new Student()
var r1 = "name" in s //输出true
var r2 = "score" in s //输出true

五、总结:写一个函数,传入一个属性以及一个对象,判断对应属性上是否存在于该对象的原型上

1.需要先确定当前对象有这个属性

2.其次判断这个属性是否在构造函数上,若不在构造函数则必定在原型上

function hasownprototype(name,obj){
	if (name in obj){
		if(obj.hasOwnProperty(name)){
			return false
		}else{
			return true
		}
	}else{
		return false
	}
}
function Student(){
	this.name = "张三"
	this.age = 21
}
Student.prototype.score = 100
var s = new Student()
var r1 = hasownprototype("score",s) //输出true
var r2 = hasownprototype("name",s) //输出false

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值