js基础学习之-js对象的属性
Js属性
1. 设置属性
1) 对象.
2) 对象[‘属性名’]
3) GetAttribute函数
2. 获取属性
1) 变量=对象.
2) 变量=对象[‘属性名’]
3) GetAttribute函数
点和[]的区别:
1.访问关键字和保留字属性时只能使用[]
2.通过名称遍历属性时只能使用[]
obj['class'] //class是保留字,E3是保留字,E5在非严格模式下依然是保留字
obj['for'] //for是关键字
//第5 版对使用关键字和保留字的规则进行了少许修改。关键字和保留字虽然仍然不能作为标识符使用,但现在可以用作对象的属性名。一般来说,最好都不要使用关键字和保留字作为标识符和属性名,以便与将来的ECMAScript 版本兼容。
function displayProp(obj){
var names="";
for(var name in obj){
names+=name+": "+obj[name]+", ";
}
alert(names);
}
3. 删除属性
1) Delete 对象.
2) Delete 对象[‘属性名’]
delete person.age //即person不再有属性age delete person['age'] //或者这样
delete只是断开属性和宿主对象的联系,而不会去操作属性中的属性
var a = {p:{x:1}};
var b = a.p;
console.log(a.p.x); //
delete a.p;
console.log(a.p.x); //TypeError a.p is undefined
console.log(a.p); //undefined
console.log(b.x); //
delete只能删除自有属性,不能删除继承属性(要删除继承属性必须从定义这个属性的原型对象上删除它,当然,这会影响到所有继承来自这个原型的对象)
function inherit(p){
if(p == null){ // 不能从null中继承
throw TypeError();
}
if(Object.create){ //如果有这个方法就直接使用
return Object.create(p);
}
var t = typeof p;
if(t !== "object" || t !== "function"){ //要继承的对象 类型要符合
throw TypeError();
}
function f(){ }; //定义一个空的构造函数
f.prototype = p; //原型指向要继承的对象p
return new f(); //创建f对象,此对象继承自p
}
var obj = {x:1}; //用来构造函数
var obj1 = inherit(obj);
obj1.y = 2;
console.log("x = "+obj1.x+" y = "+obj1.y); //x = 1 y = 2
delete obj1.x;
delete obj1.y;
console.log("x = "+obj1.x+" y = "+obj1.y); //x = 1 y = undefined x是原型创建的,y是obj变量本身的属性,所以只有y可以被删除
可配置属性才能使用delete
delete Object.prototype; // 不能删除 原型链不可配置
function f(){ }
delete this.f; //不能删除,函数是变量,是不可配置的
var x = 1;
delete this.x; //不能删除 是变量,是不可配置的
this.y = 1;
delete y; //这样可以删除,已经成为本身变量
4. 检测属性
1) in
2) hasOwnProperty()或者propertyIsEnumerable()
3) !==
in 运算符希望它的左操作数是一个字符串或者可以转换为字符串,希望它的右操作数是一个对象
var data = [5,6,7];
console.log("0" in data); //有下标0
console.log(1 in data); //1可以转换成"1"
console.log("4" in data); //下标只有 1 2 3 var obj = {x:1};
console.log("x" in obj); //true
console.log("y" in obj); //false
console.log("toString" in obj); //true 因为obj继承了这个方法
使用hasOwnProperty()或者propertyIsEnumerable() --- 后者是前者的增强
var obj = {x:1};
console.log(obj.hasOwnProperty("x")); //true
console.log(obj.hasOwnProperty("y")); //false
console.log(obj.hasOwnProperty("toString")); //false 因为obj继承了这个方法,但不是它自己的
只有检测到是自由属性并是可枚举的属性时,后者才返回true
var obj = {x:1};
console.log(obj.propertyIsEnumerable("x")); //true
console.log(obj.propertyIsEnumerable("y")); //false
console.log(obj.propertyIsEnumerable("toString")); //false 因为obj继承了这个方法,但不是它自己的
console.log(Object.prototype.propertyIsEnumerable("toString")); //false 因为最原始的的 toString就是不可枚举的
可以直接用 ”!=="运算符判断
var obj = {x:1};
console.log(obj.x !== undefined);//true
console.log(obj.y !== undefined);//false
console.log(obj.toString !== undefined); //true
5. 枚举属性
var obj = {x:1,y:2};
for(p in obj){
console.log(p);//x y
console.log(obj.p);// undefined undefined
console.log(obj[p]);//1 2
}
js基础学习之-js对象的属性的更多相关文章
- js基础学习之-js包装对象
var test = "test"; test.a = "hello"; console.log(test.a); //undifined 定义: 在JavaS ...
- js基础学习之-js全局对象
声明的三种方式: 第一种: var test; //或var test = 5; 第二种: test = 5; 第三种: window.test; //或window.test = 5; //只是使用 ...
- JS基础学习——对象
JS基础学习--对象 什么是对象 对象object是JS的一种基本数据类型,除此之外还包括的基本数据类型有string.number.boolean.null.undefined.与其他数据类型不同的 ...
- JS基础学习——闭包
JS基础学习--闭包 什么是闭包 闭包的定义如下,它的意思是闭包使得函数可以记住和访问它的词法范围,即使函数是在它声明的词法范围外执行.更简单来讲,函数为了自己能够正确执行,它对自己的词法范围产生闭包 ...
- JS基础学习——作用域
JS基础学习--作用域 什么是作用域 变量的作用域就是变量能被访问到的代码范围,比如在下面的这个js代码中,变量a的作用域就是函数foo,因此在全局作用域内的console.log(a)语句不能访问到 ...
- js如何遍历并取出对象的属性名?
js如何遍历并取出对象的属性名? dataObj = {name : su,age : 26,height : 18cm }; for(var st in dataObj) {console.dir( ...
- handlebars.js基础学习笔记
最近在帮学校做个课程网站,就有人推荐用jquery+ajax+handlebars做网站前端,刚接触发现挺高大上的,于是就把一些基础学习笔记记录下来啦. 1.引用文件: jquery.js文件下载:h ...
- JS基础学习(二)
昨天把网站上的基础知识看完了,下面是剩下的部分 第六节 JS Window浏览器对象模型 JavaScript全局对象,函数,变量均自动成为window对象的成员. 1.Window对象 1.获取浏览 ...
- JS基础学习(一)
首先感谢 http://www.w3school.com.cn/js/index.asp 学js真的很方便,&下面的内容其实是我自己做的一个备忘 第一节 大致了解 一 js基本介绍 1.轻量级 ...
随机推荐
- java学习-初级入门-面向对象④-类与对象-类与对象的定义和使用2
我们继续学习类与对象,上一篇我们定义了 坐标类(Point), 这次我们在Point的基础上,创建一个圆类(Circle). 案例:创建一个圆类 题目要求: 计算圆的周长和面积:求判断两个圆的位置关 ...
- Linux开机流程及运行级别
启动流程: 没有运行程序的硬件除了会电人,没有别的用处.那么计算机是如何识别软件并执行的呢?下面介绍操作系统的开机启动流程: BIOS:开机时主动执行的第一个程序,会识别存储设备. MBR:第一个可开 ...
- 「HNOI/AHOI2018」道路
传送门 Luogu 解题思路 考虑树形 \(\text{DP}\) 设状态 \(dp[u][i][j]\) 表示从首都走到点 \(u\) ,经过 \(i\) 条公路,\(j\) 条铁路的最小不方便值. ...
- Python栈溢出【新手必学】
python3.5.4 递归函数最恶心的时候莫非栈溢出(Stack overflow).PS:另外很多人在学习Python的过程中,往往因为没有好的教程或者没人指导从而导致自己容易放弃,为此我建了个P ...
- Hibernate all-delete-orphan[转]
博客分类: SSH 当关联双方存在父子关系,就可以在 set 处设定 cascade 为 all-delete-orphan 所谓父子关系,即指由父方控制子方的持久化圣明周期,子方对象必须和一个父 ...
- centos7安装mariadb(mysql)
centos7 默认可以yum -y install mariadb-server mariadb mariadb-client mariadb-devel 如果出现错误 GPG key retrie ...
- mysql 三表索引优化
建表语句 CREATE TABLE IF NOT EXISTS `phone`( `phoneid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `card` ...
- 8051单片机中访问int中字节的方法
在使用单片机中,unsigned int 占2个字节,unsigned char 占一个字节.而单片机是实行的字节寻址.16字节的bit寻址实在是不好用, 不好用在不能建数组. 在实际的开发过程中,要 ...
- Windows 运行chkdsk磁盘修复工具命令参数详解
chkdsk是Windows系统自带的磁盘修复工具,通常在电脑非正常关机之后再开机,系统就会自动调用chkdsk工具进行磁盘扫描和修复.同时,我们也可以在Windows系统中打开命令提示符,手动运行c ...
- 变相降价的iPhone,能挽救苹果在中国的命运吗?
人无千日好,花无百样红.当年iPhone的横空出世不仅开辟了智能手机时代,还间接导致了诺基亚.黑莓等手机品牌的没落.十余年来,苹果凭借iPhone活得风光无限,并成为全球首个市值超万亿美元的公司.但进 ...