对象

作者: _v_xw | 来源:发表于2017-04-20 15:37 被阅读0次
  1. 对象属相调用的方法
  • .调用直接在对象后面添加 .和属性名(属性名即使原本是加了引号的字符串,调用的时候不用添加);
  • []调用在对象直接添加[],在其中添加属性名,有引号的属性名一定要添加引号,不然输出为undefined
var textObj = {
     name: 'tom',
     age: 22,
     12: 'text'
}
var textVar = 'name';
console.log(textObj.name) // tom
console.log(textObj[name]) // undefined
console.log(textObj['name']) // tom
console.log(textObj.12) // error错误
console.log(textObj[12]) // text
console.log(textObj['12'] // text
console.log(textObj.textVar) // undefined
console.log(textObj[textVar]) // tom
  • 也就是说字符串属性名使用 . 的时候不用添加引号,
    配合[ ]一定要加引号
  • 数字属性名只能配合[ ]使用,引号有无都可以使用;
  • 当属性名调用的是变量时要配合[ ]使用;
  1. 属性删除与判断
  • 使用delete 对象.属性名;
  • 不可以删除原型属性;
obj.prototype.name = 'Tom';
delete obj.name;
console.log(obj.name) // 是Tom 因为还存在,删不掉
  • 同样用 .hasOwnProperty(propname)可以判断一个对象是否拥有特定属性,这个方法不能检测原型链中的属性;
'Hello World'.hasOwnProperty('split')  //false 原型属性不能检测
String.prototype.hasOwnProperty('split') //true 原型可以检测自己的属性
{'name':'Tom'}.hasOwnProperty('name') // true 自身属性可以检测
  1. 对象的创建方法
  • 直接声明
 var testObj = {
   'property1' : 1,
   'property2' : 2
}
  • 构造函数
function Obj() {
   this.property1 = 1;
   this.property2 = 2;  //共有属性 外部可以可以修改该属性
   var property3 = 3;  //私有属性  只能通过构造函数内部的方法来修改
   this.method1 = function () {}  //共有方法
  1. Object.keys()获取属性名方法
    传入对象,返回属性名
var obj = {'a':'123','b':'345'};
console.log(Object.keys(obj));  //['a','b']

传入字符串,返回索引

var str = 'ab1234';
console.log(Object.keys(obj));  //[0,1,2,3,4,5]

数组 返回索引

 var arr = ["a", "b", "c"];
console.log(Object.keys(arr)); // console: ["0", "1", "2"]

构造函数 返回空数组或者返回实例的属性名

var obj = {
      name: 'aa',
      age: 12
}
 console.log(Object.keys(Object)); // []
console.log(Object.keys(obj)); // ['name','age']

相关文章

网友评论

      本文标题:对象

      本文链接:https://www.haomeiwen.com/subject/dzjlzttx.html