(转)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 ...
随机推荐
- python2.7安装Twisted报Microsoft Visual C++9.0 required
环境: 操作系统:Windows 7 32位 语言:Python 2.7.9 Twisted: Twisted 安装,执行如下命令: pip install Twisted 报错如下: error:M ...
- 如何在GPT分区上安装WIN7
大硬盘和WIN8系统,让我们从传统的BIOS+MBR模式升级到UEFI+GPT模式,现在购买的主流电脑,都是预装WIN8系统,为了更好的支持2TB硬盘,更快速的启动win8,预装系统都采取了GPT分区 ...
- CF 1005A Tanya and Stairways 【STL】
Little girl Tanya climbs the stairs inside a multi-storey building. Every time Tanya climbs a stairw ...
- HDU 2473 Junk-Mail Filter 【并查集删除】
Junk-Mail Filter Time Limit: 15000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 有向图强连通分量的Tarjan算法及模板
[有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强联通(strongly connected),如果有向图G的每两个顶点都强联通,称有向图G是一个强联通图.非强联通图有向 ...
- HDU 2045 LELE的RPG难题(递推)
不容易系列之(3)—— LELE的RPG难题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- Maven学习笔记2
Maven安装配置 1.下载Maven 官方地址:http://maven.apache.org/download.cgi 将下载的压缩包解压到你要安装 Maven 的文件夹.假设你解压缩到文件夹 – ...
- 如何加快exp/imp的速度 - direct=y
http://blog.itpub.net/35489/viewspace-613625 Oracle9i 或 10g . 1. 内存中关系到exp的速度的是 large_pool_siz ...
- [CF538H]Summer Dichotomy
[CF538H]Summer Dichotomy 题目大意: 将若干个学生分为两个班级\(S_1,S_2\),每个班的学生数分别为\(n_1,n_2\)(甚至可以没有学生,也可以没有老师).给出限 ...
- TZOJ 数据结构实验:单链表元素插入
描述 实现函数CreateHeader用于创建空链表,实现Insert函数并调用它完成带头节点链表的创建. 部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码. void PrintLinkL ...