Js属性

1. 设置属性

1)  对象.

2)  对象[‘属性名’]

3)   GetAttribute函数

2. 获取属性

1)  变量=对象.

2)  变量=对象[‘属性名’]

3)  GetAttribute函数

点和[]的区别:

  1.访问关键字和保留字属性时只能使用[]

   2.通过名称遍历属性时只能使用[]

  

  1. obj['class'] //class是保留字,E3是保留字,E5在非严格模式下依然是保留字
  2. obj['for'] //for是关键字
  3. //第5 版对使用关键字和保留字的规则进行了少许修改。关键字和保留字虽然仍然不能作为标识符使用,但现在可以用作对象的属性名。一般来说,最好都不要使用关键字和保留字作为标识符和属性名,以便与将来的ECMAScript 版本兼容。
  4. function displayProp(obj){
  5. var names="";
  6. for(var name in obj){
  7. names+=name+": "+obj[name]+", ";
  8. }
  9. alert(names);
  10. }

3. 删除属性

1) Delete 对象.

2)   Delete 对象[‘属性名’]

  1. delete person.age //即person不再有属性age
  2.  
  3. delete person['age'] //或者这样

delete只是断开属性和宿主对象的联系,而不会去操作属性中的属性

  1. var a = {p:{x:1}};
  2. var b = a.p;
  3. console.log(a.p.x); //
  4. delete a.p;
  5. console.log(a.p.x); //TypeError a.p is undefined
  6. console.log(a.p); //undefined
  7. console.log(b.x); //

delete只能删除自有属性,不能删除继承属性(要删除继承属性必须从定义这个属性的原型对象上删除它,当然,这会影响到所有继承来自这个原型的对象)

  1. function inherit(p){
  2. if(p == null){ // 不能从null中继承
  3. throw TypeError();
  4. }
  5. if(Object.create){ //如果有这个方法就直接使用
  6. return Object.create(p);
  7. }
  8. var t = typeof p;
  9. if(t !== "object" || t !== "function"){ //要继承的对象 类型要符合
  10. throw TypeError();
  11. }
  12. function f(){ }; //定义一个空的构造函数
  13. f.prototype = p; //原型指向要继承的对象p
  14. return new f(); //创建f对象,此对象继承自p
  15. }
  16.  
  17. var obj = {x:1}; //用来构造函数
  18. var obj1 = inherit(obj);
  19. obj1.y = 2;
  20. console.log("x = "+obj1.x+" y = "+obj1.y); //x = 1 y = 2
  21. delete obj1.x;
  22. delete obj1.y;
  23. console.log("x = "+obj1.x+" y = "+obj1.y); //x = 1 y = undefined x是原型创建的,y是obj变量本身的属性,所以只有y可以被删除

可配置属性才能使用delete

  1. delete Object.prototype; // 不能删除 原型链不可配置
  2.  
  3. function f(){ }
  4. delete this.f; //不能删除,函数是变量,是不可配置的
  5.  
  6. var x = 1;
  7. delete this.x; //不能删除 是变量,是不可配置的
  8.  
  9. this.y = 1;
  10. delete y; //这样可以删除,已经成为本身变量

4. 检测属性

1)  in

2)  hasOwnProperty()或者propertyIsEnumerable()

3)  !==

in 运算符希望它的左操作数是一个字符串或者可以转换为字符串,希望它的右操作数是一个对象

  1. var data = [5,6,7];
  2. console.log("0" in data); //有下标0
  3. console.log(1 in data); //1可以转换成"1"
  4. console.log("4" in data); //下标只有 1 2 3
  5.  
  6. var obj = {x:1};
  7. console.log("x" in obj); //true
  8. console.log("y" in obj); //false
  9. console.log("toString" in obj); //true 因为obj继承了这个方法

使用hasOwnProperty()或者propertyIsEnumerable() --- 后者是前者的增强

  1. var obj = {x:1};
  2. console.log(obj.hasOwnProperty("x")); //true
  3. console.log(obj.hasOwnProperty("y")); //false
  4. console.log(obj.hasOwnProperty("toString")); //false 因为obj继承了这个方法,但不是它自己的

只有检测到是自由属性并是可枚举的属性时,后者才返回true

  1. var obj = {x:1};
  2. console.log(obj.propertyIsEnumerable("x")); //true
  3. console.log(obj.propertyIsEnumerable("y")); //false
  4. console.log(obj.propertyIsEnumerable("toString")); //false 因为obj继承了这个方法,但不是它自己的
  5. console.log(Object.prototype.propertyIsEnumerable("toString")); //false 因为最原始的的 toString就是不可枚举的

可以直接用 ”!=="运算符判断

  1. var obj = {x:1};
  2. console.log(obj.x !== undefined);//true
  3. console.log(obj.y !== undefined);//false
  4. console.log(obj.toString !== undefined); //true

5. 枚举属性

  1. var obj = {x:1,y:2};
  2. for(p in obj){
  3. console.log(p);//x y
  4. console.log(obj.p);// undefined undefined
  5. console.log(obj[p]);//1 2
  6. }

js基础学习之-js对象的属性的更多相关文章

  1. js基础学习之-js包装对象

    var test = "test"; test.a = "hello"; console.log(test.a); //undifined 定义: 在JavaS ...

  2. js基础学习之-js全局对象

    声明的三种方式: 第一种: var test; //或var test = 5; 第二种: test = 5; 第三种: window.test; //或window.test = 5; //只是使用 ...

  3. JS基础学习——对象

    JS基础学习--对象 什么是对象 对象object是JS的一种基本数据类型,除此之外还包括的基本数据类型有string.number.boolean.null.undefined.与其他数据类型不同的 ...

  4. JS基础学习——闭包

    JS基础学习--闭包 什么是闭包 闭包的定义如下,它的意思是闭包使得函数可以记住和访问它的词法范围,即使函数是在它声明的词法范围外执行.更简单来讲,函数为了自己能够正确执行,它对自己的词法范围产生闭包 ...

  5. JS基础学习——作用域

    JS基础学习--作用域 什么是作用域 变量的作用域就是变量能被访问到的代码范围,比如在下面的这个js代码中,变量a的作用域就是函数foo,因此在全局作用域内的console.log(a)语句不能访问到 ...

  6. js如何遍历并取出对象的属性名?

    js如何遍历并取出对象的属性名? dataObj = {name : su,age : 26,height : 18cm }; for(var st in dataObj) {console.dir( ...

  7. handlebars.js基础学习笔记

    最近在帮学校做个课程网站,就有人推荐用jquery+ajax+handlebars做网站前端,刚接触发现挺高大上的,于是就把一些基础学习笔记记录下来啦. 1.引用文件: jquery.js文件下载:h ...

  8. JS基础学习(二)

    昨天把网站上的基础知识看完了,下面是剩下的部分 第六节 JS Window浏览器对象模型 JavaScript全局对象,函数,变量均自动成为window对象的成员. 1.Window对象 1.获取浏览 ...

  9. JS基础学习(一)

    首先感谢 http://www.w3school.com.cn/js/index.asp 学js真的很方便,&下面的内容其实是我自己做的一个备忘 第一节 大致了解 一 js基本介绍 1.轻量级 ...

随机推荐

  1. Python print()函数

    #输出单个数据,会自动输出回车换行 print(1) print(2) #输出 1 2 #输出换行 print('\n') #防止换行 for x in range(0, 5): print(x, e ...

  2. C#用SQLDMO操作数据库----转载

    C#用SQLDMO操作数据库 sqldmo.dll是随sql server2000一起发布的.sqldmo.dll自身是一个com对象 sqldmo(sql distributed managemen ...

  3. 简述javascript的解析与执行

    我们知道浏览器中javascript程序的执行是基于变量与函数的.那么浏览器是如何保存数据,又是如何执行的呢?今天我们一起来探究一下! 0.写在前 最新的 ECMAScript 标准定义了 8 种数据 ...

  4. 五、java基础-关键字this_static_super_abstract_final,finalize()方法finally语句块

    1.关键字this 含义:this 是一个引用类型,代表当前对象,引用类型里面必然保存内存地址,在堆中的每个对象中存储,保存内存地址指向自身. 用法: 1)this可以用在成员方法中,里面保存内存地址 ...

  5. Linux CentOS7 VMware 特殊权限set_uid、特殊权限set_gid、特殊权限stick_bit、软链接文件、硬连接文件

    一.特殊权限set_uid root用户本身拥有对/etc/passwd的写权限,无可厚非:那普通用户呢,这里就用到了setuid,setuid的作用是“让执行该命令的用户以该命令拥有者的权限去执行” ...

  6. jquery使用css函数设置背景色无效解决办法

    外部的css样式为: #imageArea{ width: 200px; height: 300px; background-color: #eee !important; } 通过 以下代码来修改其 ...

  7. Day9 - A - Apple Catching POJ - 2385

    Description 有两棵APP树,编号为1,2.每一秒,这两棵APP树中的其中一棵会掉一个APP.每一秒,你可以选择在当前APP树下接APP,或者迅速移动到另外一棵APP树下接APP(移动时间可 ...

  8. VScode禁用alt+key触发菜单栏快捷键

    因为用惯了Mac,突然改回Windows,但是已经习惯了按Command键.所以在Windows下把vscode的快捷键全改成alt+key了.但是Windows的alt+key快捷键就比较烦人了.所 ...

  9. 【Unity】稍微说一下关于各种坐标的转换。比如WorldToScreenPoint

    之前写了一篇关于在物体头顶上显示名字的随笔. 估计难懂的点就在各种坐标的转换. 这里详细(就我这水平,怎么可能详细~~~)解说一下.额............. 用另一种方式举个栗子吧. 还是实现在物 ...

  10. java多线程知识回顾(笔记)

    线程创建的方式 有两种 第一种是继承Thread类 重写run方法 (个人偏向这一种实际中这种用的较多) 例如 public class MyThead extends Thread { int j= ...