《javascript语言精粹》学习笔记1

做为一个前端的学习者,以前因为时间赶且懒的特性,没有好好的学习一下js的特性,只看了w3cschool的基础教程,知道语法后就用起了jQuery框架,js的不少基础彻底没有接触理解。 这段时间了解到,js基础仍是要好好学,对之后找工开发都有好处。<br> 进入正题,一下大部分是书上的东西,只是想看过一遍后,本身再过一遍加深理解。<br> 第一章是说明js的背景,略。<br> 第二章是js基础语法,略之。<br>前端

第三章讲对象。 1.数据类型

首先应该明确的是js的数据类型,包括简单数据类型(数字,字符串,布尔值,null值,undefined值),对象(数组,函数,正则表达式,对象)。简单数据对象拥有方法,可是不可变。对象是属性的容器,每一个属性拥有属性和值。 2.对象字面量

对象的定义使用花括号正则表达式

<!-- lang: js -->
var stooge = {"first_name":"Jerome","last_name":"Howard"};

3.检索

访问对象能够经过两种方式,优先考虑.的表示方法,由于紧凑,可读性好数组

<!-- lang: js -->
stooge["first_name"];
stooge.first_name;

4.更新

经过赋值语句来更新。若是以前没那个对象名,就会直接扩充到已有对象中。框架

<!-- lang: js -->
stooge["first_name"] = "gao"
stooge.first_name = "gao";

5.引用

对象经过引用来传递,他们永远不会被复制。函数

<!-- lang: js -->
var a = {};var b = {};var c = {};//这是3个不一样的空对象
var a = b = c = {};//a,b,c都引用同一个对象

6.原型

每一个对象对链接到一个原型对象,而且它能够从中继承属性,全部经过对象字面量建立的对象都链接到Object .prototype。 原型链接在更新值的时候是不会更改到该对象的原型的,原型链接只有在检索值的时候才会被用到,当咱们尝试去获取对象的属性值的时候,若是没有,js会试着从原型对象中获取属性值。若是没有,再从它的原型找,直到到达终点Object.prototype。若是仍是不存在于原型链中,则返回undefined。这个过程叫委托学习

<!-- lang: js -->
var flight.equipment = {
    airline:"Oceanic",
    number:815,
    departure:{
        IATA:"SYD",
        time:"2004-09-22 14:55",
        city:"Sydney"
    },
    arrivak:{
        IATA:"LAX",
        time:"2004-09-23 10:42",
        city:"Sydney"
    }
};

if(typeof Object.beget !== 'function') {
    Object.create = function (o) {
        var F = function () {};
        F.prototype = o;
        return  new F();
    };
}
var another_flight = Object.create(flight);
another_flight['airline'];//"Oceanic"
flight.id = 10086;
another_flight['id'];//10086

7.反射

检查对象并肯定对象有什么属性ui

<!-- lang: js -->
typeof flight.number;//"number"
typeof flight.status;//"undefined"
typeof flight.id;//"number"

hasOwnProperty方法则不会检查原型链prototype

<!-- lang: js -->
flight.hasOwnProperty('number');//true
another_flight.hasOwnProperty('number');//false

8.枚举

使用 for in 语句,可用hasOwnProperty方法作过滤器,以及typeof来排除函数。 属性名的出现顺序是不肯定的,能够先把知道的属性名保存在一个数组中,顺寻排好,而后经过一个循环获得按照顺序排列的属性值。code

<!-- lang: js -->
var i;
var properties = {'airline','number','departure','arrivak'};
for (i = 0;i < properties.length; i += 1){
    document.writeln(properties[i] + ':' + another_flight[properties[i]]);
}
//airline:Oceanic number:815 departure:[object Object] arrivak:[object Object]

9.删除

删除对象的属性可能会让来自原型链中的属性透露出来对象

<!-- lang: js -->
another_flight.number = 1000;
another_flight.number;    //1000
delete another_flight.number;
another_flight.number;//815

10.减小全局变量污染

最小化使用全局变量的方法之一就是为应用只建立一个惟一的全局变量

<!-- lang: js -->
var MYAPP = {};
MYAPP.stooge = {
    "id":10101,
    "number":1038
}

此时,该变量变成了应用的容器。

相关文章
相关标签/搜索