hasOwnProperty,in
hasOwnProperty,in区别:
hasOwnProperty:指出一个对象是否具有指定名称的属性
in:对象是否能够访问此属性(包括直接在对象上访问和通过原型访问)
看下示例代码:
(function () {
    function Person() {
    }
    var p = Person.prototype;
    p.name = "晨落梦公子";
    p.age = 24;
    var person1 = new Person();
    console.log(person1.hasOwnProperty("name")); // false
    console.log("name" in person1); //true
})();
补充两行代码
person1.name = "meng";
console.log(person1.hasOwnProperty("name")); //true
利用两者的区别我们可以:判断该属性是存在于对象中还是原型中。
判断过程,先in如果为true,说明当前对象的父类有此属性,再用hasOwnProperty,true则表示他具有此属性,false就表示他还没有为此属性赋值。
巧记:hasOwnProperty,hasOwn嘛,就是表示他自己是否有此属性。
in,在什么里面,当前屋子里面沙发上有的东西也可以说成此屋子有此东西。
根据以上的思路自己衍生方法,目的是实现,判断对象是否有此原型方法
Object.prototype.hasPrototypeProperty=function ( pro) {
        return !this.hasOwnProperty(pro) && (pro in this);
    };
代码应用(person1声明同上)
    console.log(person1.hasPrototypeProperty("name")); //true
    person1.name = "晨落梦公子";
    console.log(person1.hasPrototypeProperty("name")); //false
从应用中可以看出,该方法效果,如果当前对象是原型上的方法则返回true,自己本身声明此属性后则返回false。
hasOwnProperty,in的更多相关文章
- JavaScript中typeof,instanceof,hasOwnProperty,in的用法和区别
		一. typeof操作符 typeof操作符用于返回正在使用值的类型. // 使用原始值 let mNull = null; let mUndefined = undefined; let mStri ... 
- isPrototypeOf,instanceof, hasOwnProperty,in的作用与区别
		isPrototypeOf 作用:检测一个对象是否是另一个对象的原型.或者说一个对象是否被包含在另一个对象的原型链中 function Fn(name){ this.name=name; } var ... 
- 对象是否拥有某个属性,in和for in以及object.hasOwnProperty('×××')的异同,以及Object.defineProperty(),Object.keys(),Object.getOwnPropertyNames()的用法
		1.在某个对象是否拥有某个属性,判断的方法有很多,常用的方法就是object.hasOwnProperty('×××'),这个方法是不包括对象原型链上的方法的,举个例子: var obj = { na ... 
- JavaScript--我发现,原来你是这样的JS:面向对象编程OOP[2]--(创建你的那个对象吧)
		一.介绍 我们继续面向对象吧,这次是面向对象编程的第二篇,主要是讲创建对象的模式,希望大家能从博客中学到东西. 时间过得很快,还是不断的学习吧,为了自己的目标. 二.创建对象 1.前面的创建对象方式 ... 
- JS--我发现,原来你是这样的JS:面向对象编程OOP[2]--(创建你的那个对象吧)
		一.介绍 我们继续面向对象吧,这次是面向对象编程的第二篇,主要是讲创建对象的模式,希望大家能从博客中学到东西. 时间过得很快,还是不断的学习吧,为了自己的目标. 二.创建对象 1.前面的创建对象方式 ... 
- 笔记-JS高级程序设计-变量,作用域和内存问题
		1在将一个值赋给变量时,解析器必须确认这个值是基本类值还是引用类型值,基本类型值是按值访问的,可以操作保存在在变量中的实际值,引用类型是保 存在内存中的对象,JS不允许直接访问内存中的位置,所以实际操 ... 
- 容易遗忘的JS知识点整理—hasOwnProperty相关
		为了判断一个对象是否包含自定义属性而不是原型链上的属性,我们需要使用继承自 Object.prototype 的 hasOwnProperty方法.hasOwnProperty 是 JavaScrip ... 
- js原型和原型链,以及__proto__、prototype属性
		__proto__和prototype属性: 1.__proto__属性: 在JS里,万物皆对象(函数是对象.原型也是对象...).对象都具有属性__proto__,这个属性会指向该对象的原型. 2. ... 
- 一篇笔记带你快速掌握面向对象的Javascript(纯手打)
		/** * 创建对象 */ //1.工厂模式 //特点: //创建的对象无法识别其对象类型,不支持instanceof等判断方法,无法标识不同的对象 function createObj(name,s ... 
随机推荐
- Bootstrap Typeahead/Jquery autocomplete自动补全
			使用Bootstrap Typeahead 组件: Bootstrap 中的 Typeahead 组件就是通常所说的自动完成 AutoComplete,自动填充. 效果如图所示: 实现方式: 1.引入 ... 
- 《奥威Power-BI销售计划填报 》精彩回顾
			我们经常遇到这样的问题:业务单据是来自ERP系统,销售计划是EXCEL做的,想把两者整合在一起做分析,怎么办? 单据大,导出EXCEL太费劲,也很难分析到历史数据,但又不能动ERP系统 (自己也不会改 ... 
- EBS安装过程报错,oracle.apps.fnd.txk.config.ProcessStateException: FileSys OS COMMAND Failed : Exit=2 See log for details.
			日志: Executing command: /test/software/12/startCD/Disk1/rapidwiz/jre/Linux_x64/1.6.0/bin/java -cp /te ... 
- NSFileManager 遍历目录
			NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *documentPath = [NSHomeDirecto ... 
- winform  窗体移动API、窗体阴影API
			//窗体移动API [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport ... 
- .NET WebForm简介
			WebForm简介 微软开发的一款产品,它将用户的请求和响应都封装为控件.让开发者认为自己是在操作一个windows界面.极大地提高了开发效率. C/S(客户端) 主要是在本机执行(每一个客户端是独立 ... 
- 夺命雷公狗-----React---13--事件监听
			在react中事件监听直接作为组建的属性来添加即可,就像DOM中的html操作 <!DOCTYPE> <html> <head> <meta charset= ... 
- UVM中的class--2
			1)uvm_component从uvm_report_object继承而来,提供的功能包括: 1)Hierarchy,-----searching and traversing component h ... 
- 谷歌大神Jeff Dean:大规模深度学习最新进展  zz
			http://www.tuicool.com/articles/MBBbeeQ 在AlphaGo与李世石比赛期间,谷歌天才工程师Jeff Dean在Google Campus汉城校区做了一次关于智能计 ... 
- Stylish: http://bbs.csdn.net/topics/
			[id^=google_ads_], [id^=bd_ad_], #cpro_u2392825, [id^=BAIDU_SSP_], .bbs_top_ad, .csdn-toolbar, #topi ... 
