(转)JavaScript: in, hasOwnProperty, delete, for/in
in 运算符
判断对象是否拥有某一属性
只要对象拥有该属性,就会返回true,否则false
var point = { x:1, y:1 };
alert( 'x' in point ); //true
var arr = ['one', 'two'];
alert( 'kang' in arr ); //false
alert( '1' in arr ); //true
alert( 'push' in arr ); //true
var fn = function(){};
fn.prototype.site = 'cnblogs.com';
var obj = new fn();
alert( 'site' in obj ); //true
hasOwnProperty
判断对象是否具有某一属性。这个属性必须是自己具有的,即非继承的。
var o = {};
o.name = 'object';
alert( o.hasOwnProperty('kang') ); //false: 不存在
alert( o.hasOwnProperty('toString') ); //false: 'toString'方法继承自'Object'
alert( o.hasOwnProperty('name') ); //true
alert( Math.hasOwnProperty("kang") ); //false
alert( Math.hasOwnProperty("cos") ); //true;
alert( Math.hasOwnProperty("toString") ); //false: 'toString'方法继承自'Object'
var base = function(){
this.name = 'Rain Man';
};
base.prototype.site = 'cnblogs.com';
var o = new base();
alert( o.hasOwnProperty('site') ); //false: 是继承的
alert( o.hasOwnProperty('name') ); //true
delete 运算符
删除对象的属性,删除后不能使用 for/in 枚举出删除的属性。
删除数组的元素,删除后数组的 length 不会改变,不可以使用 for/in 枚举出来删除的元素; shift()、pop()、splice()才会真正的删除数组中的元素
var point = { x:1, y:1 };
delete point.x; //{ y:1 }
var arr = ['one', 'two'];
delete arr[0]; //[undefined, 'two']
for/in
枚举对象的属性
对象的一些属性是不可以使用for/in来输出的,例如:内部的,用户自定义的可以,从构造函数prototype中继承的也可以枚举出
var arr = ['one', 'two'];
arr.author = 'rainman';
//不会枚举出数组的push,pop等方法,因为这些方法都是内部的
for( var i in arr ) ist(arr[i]); //'one'、'two'、'rainman'
var Blog = function(){};
Blog.prototype.site = 'cnblogs.com';
var oBlog = new Blog();
for( var i in oBlog ) ist(oBlog[i]); //'cnblogs.com'
var RM = function(){};
RM.prototype = new Blog();
RM.prototype.url = 'http://rainman.cnblogs.com'
var oRM = new RM();
for( var i in oRM ){
ist(i + ':'+ oRM[i]); //'url:http://rainman.cnblogs.com'、site:cnblogs.com
}
(转)JavaScript: in, hasOwnProperty, delete, for/in的更多相关文章
- 关于JavaScript中的delete操作
关于JavaScript中的delete操作 看到一道题,是这样的: (function(x){ delete x; return x; })(1); 1 null undefined Error 我 ...
- Javascript中的delete
一.问题的提出 我们先来看看下面几段代码,要注意的是,以下代码不要在浏览器的开发者工具(如FireBug.Chrome Developer tool)中运行,原因后面会说明: 为什么我们可以删除对象的 ...
- JavaScript中hasOwnProperty函数
JavaScript中hasOwnProperty函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性. 使用方法: object.hasOwnProperty(proName) 其中参数 ...
- Javascript中的delete介绍
关于JavaScript中的Delete一直没有弄的很清楚,最近看到两篇这方面的文章,现对两文中部分内容进行翻译(内容有修改和添加,顺序不完全一致,有兴趣推荐看原文),希望能对大家有所帮助 一.问题的 ...
- Javascript 中的 in, hasOwnProperty, delete, for/in
in 运算符 判断对象是否拥有某一属性只要对象拥有该属性,就会返回true,否则false var point = { x:1, y:1 };alert( 'x' in point ); //tru ...
- 深入理解javascript 中的 delete(转)
在这篇文章中作者从<JavaScript面向对象编程指南>一书中关于 delete 的错误讲起,详细讲述了关于 delete 操作的实现, 局限以及在不同浏览器和插件(这里指 firebu ...
- javascript 中的 delete
那么,为什么我们能删除一个对象的属性: var x = { a: 1 }; delete x.a; // true x.a; // undefined 但却不能删除一个变量: var x = 1; d ...
- 【JavaScript】关于delete
delete 只能删除属性,不能删除变量 比如 var m = "haha"; delete m; //false m = "haha";----->wi ...
- [Javascript] Prototype, hasOwnProperty(), valueOf() and toString() methods.
Sometime, use can rewrite the toString , valueOf method to make those function more useful: For exma ...
随机推荐
- 使用Mybatis做批量插入
最近有个需求,将excel的数据导入的数据库的这个一个操作. 工作主要分为:解析excel,将excel中的数据单条循环插入数据库. 使用框架:mybatis+spring 使用过Mybatis的人都 ...
- 只用120行Java代码写一个自己的区块链-2网络
已经看完第一章的内容了吗,欢迎回来. 上一章我们介绍了关于怎么去编写自己的区块链,完成哈希和新块的校验.但是它只是在一个终端(结点)上跑.我们怎么样来连接其他结点以及贡献新的块呢,怎么样广播到其他结点 ...
- Python3中的新特性(2)——常见陷阱
1.文本与字节 Python3对文本字符串(字符)和二进制数据(字节)进行了严格区分,'hello'表示一个以Unicode编码保存的文本字符串,而b'hello'表示一个字节字符串. 在Python ...
- Web.config中appSettings节点值两种读取方法
<appSettings> <add key="ClientPort" value="5252"/> <add ...
- 2017中国大学生程序设计竞赛 - 女生专场A【模拟】
A HDU - 6023 [题意]:求AC题数和总时长. [分析]:模拟.设置标记数组记录AC与否,再设置错题数组记录错的次数.罚时罚在该题上,该题没AC则不计入总时间,AC则计入.已经AC的题不用再 ...
- 动态规划二:最长公共子序列(LCS)
1.两个子序列:X={x1,x2....xm},Y={y1,y2....yn},设Z={z1,z2...zk}. 2.最优子结构: 1)如果xm=yn ,则zk=xm=yn且Zk-1是Xm-1和Yn- ...
- Maven学习笔记3
好了,按照笔记2的方法我们创建好一个web项目(使用maven:java项目还是java项目,web项目还是web项目,唯一的变化既是我们在pom.xml中配置了我们本应该先下载然后导入的jar包,这 ...
- Oracle SQL*Loader commit point tips
http://www.dba-oracle.com/t_sql_loader_commit_frequency.htm - Question: Can I control the commit fr ...
- 和java面试不得不说的故事
一直都没有想到,可以有机会可以面试他人,很感谢现在的公司,给我不少的机会可以尝试从不同方面尝试一些工作,在入职现公司之前也作为面试者参加过不少面试,不过还好,面试通过率都还好,大部分是待遇谈不拢.现在 ...
- 自定义数据类型写入SequenceFile并读出
开头对这边博客的内容做个概述,首先是定义了一个DoubleArrayWritable的类,用于存放矩阵的列向量,然后将其作为value写入SequenceFile中,key就是对应的矩阵的列号,最后( ...