javascript函数与对象的关系

 一直觉得红宝书中的一句话特别经典“函数是对象,函数名是引用”,揭示了函数就是对象的本质;

 在javascirpt中有一类数据类型,我们通常称之为简单的数据类型,包含了常见的数字(Number),字符串(String),布尔值(true,false),以及常常让人难以琢磨和始料未及的null,undefined;除了这些之外的其他所有值我们都可以成为对象,虽然上述的几种简单的数据类型拥有方法或属性;但是他们不是可变的;在《javascript语言精髓》中对对象做了如下定义:javascript对象是可变的键控集合。(对象是属性的容器)。

在javascript中包含了一中原型链的特性,容许对象继承另一个对象的属性,正确的使用它能够减少对象初始化

消耗的时间和内存;

 在定义对象时,我们常常使用对象字面量的方式;其实就是一堆用{}包起来的“名/值”对;而且,对象时可嵌套的;

 

 在“检索”(查找)对象包含的值是,我们一般采取两种方式:[],以及"."点好表示法;一般推荐.,因为他更紧凑且可读性很强;当我们尝试检索一个不存在的成员属性的值,会返回undefined;不过我们可以使用"||"来,填充默认值(一般在声明变量时使用);

 

var father = Super.child || "jxj";

 同时要注意的时,当我们尝试从undefined的成员属性中取值是会导致TypeError(IE8,9,10表现尤为突出);

 不过我们可以尝试做一个类似的判断,向下面一样,使用&&运算符来避免错误。

 
var fly = flight.equipment && flight.equipment.model;


 刚才提到了原型这个神秘的东东;下面简单介绍一下(以为内前面几篇文章扯了好多好多);每个对象都连接到一个原型对象上,并且从中继承其属性和方法;通过对象字面量定义的队形都连接到了Object.prototype,他是js中的标配对象。在传建一个对象后,我们往往希望选择性的选取某个对象作为它的原型;这里提供一个create方法,可以创建

 一个使用原对象作为其原型的新对象;

 if(typeof Object.type !== "function") 
 {
 Object.create = function (o) 
 {
 var F = new Function () {};
 F.prototype = o;
 return new F();
 };
 }

 在js中有一个操作符delete,我们常常用来删除对象的属性;使用delete删除变量时,你就会发现使用var申明的变量和不是使用var声明变量的区别,自己试试啊,这里就不揭晓了。