浓缩解读前端系列书籍一周一章前端书

一周一章前端书·第8周:《你不知道的JavaScript(上)》

2017-12-01  本文已影响4人  梁同学de自言自语

第3章: 对象

3.1 语法

3.2 类型

内置对象
var str = 'i am a string';
typeof str; //string
str instanceof String;  // false

var strObj = new String('i am a string');
typeof strObj;  // object
strObj instanceof String;   // true

3.3 内容

var myObj = {
    a : 2
}

myObj.a; // 2
myObj['a']; // 2
var myObj = {};
myObj[true] = 'foo';
myObj[3] = 'bar';
myObj[myObj] = 'baz';

myObj['true']; // 'foo'
myObj['3']; // 'bar'
myObj['[object object]]']; // 'baz'
3.3.1 可计算属性名
var prefix = 'foo';
var myObj = {
    [prefix + 'bar'] : 'hello',
    [prefix + 'baz'] : 'world'
}
myObj['foobar'];    //hello
myObj['foobaz'];    //world

var myObj = {
    [Symbol.Something] : 'hello world'
}
//有点类似vuex中store定义函数的用法
3.3.2 属性与方法
function foo(){
    console..log('foo');
}
var someFoo = foo;  //对foo函数的变量引用
var myObj = {
    someFoo : someFoo
}
//输出是一样的
foo;
someFoo;
myObj.someFoo;
3.3.3 数组
var arr = ['foo',42,'bar'];
arr.length; //3
arr[0]; //foo
arr[2]; //42
var arr = ['foo',42,'bar'];
arr.baz = 'baz';
arr.length; // 3  看到虽然可以给数组添加属性,但length值未发生变化
arr.baz; //baz
3.3.4 赋值对象
function anotherFunction(){}
var anotherObj = {
    active : true
}
var anotherArr = [];
var myObj = {
    age : 2,
    walk : anotherFunction,
    alive : anotherObj,
    scoreHistory : anotherArr
}
anotherArr.push(anotherObj,myObj);
3.3.5 属性描述符
var myObj = {
    a : 2
};
var myObj = {};
Object.defineProperty(myObj,'a',{
    value : 2,
    writable : true,
    configurable : true,
    enumerable : true
})
3.3.6 不变性
3.3.7 [[Get]]
var myObj = {
    a : 2
};
myObj.a;    //2
myObj.b;    //undefined
3.3.8 [[Put]]
3.3.9 Getter和Setter
var myObj = {
    get a(){
        return a;
    }
};
Object.defineProperty(myObj,'b',{
    get : function(){
        return this.a * 2;
    },
    enumrable : true
});
myObj.a;    // 2
myObj.b;    // 4
3.3.10 存在性
var myObj = {
    a : 2
};
("a" in myObj); //true
("b" in myObj); //false
myObj.hasOwnProperty("a");  // true
myObj.hasOwnProperty("b");  // false

3.4 遍历

var myArray = [1,2,3];
for(var item of myArray){
    console.log(item);
}
// 1
// 2
// 3

3.5 小结

上一篇 下一篇

猜你喜欢

热点阅读