`
liuxiaoxi1201
  • 浏览: 4766 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

javascript语言精粹读书笔记——第三章对象(一)

    博客分类:
  • js
 
阅读更多

检索:

代码样例:

var stooge = {
"first-name":"Jerome",
"lastname":"Howard"
}
document.writeln(stooge["first-name"]);
document.writeln(stooge.lastname);

 

如果对象属性名是合法的javascript标识符,可以用 ‘对象.属性名’ 表示法

否则用‘对象["属性名"]’表示法

 

||和&&的作用

||可以用来填充默认值

var middle = stooge["middle-name"]||"(none)";    //(none)

 尝试从undefined的成员属性中取值将会导致TypeError异常。这时通过&&来避免错误

document.writeln(stooge["middle-name"]);    //undefined

 

document.writeln(stooge["middle-name"].model); //TypeError: stooge['middle-name'] is undefined

 

document.writeln(stooge["middle-name"]&&stooge["middle-name"].model);    //undefined

 更新:

对象里的值可以通过赋值语句来更新,如果属性值已存在,它被替换掉

如果之前没有那个属性名,该属性被扩充到对象中

stooge.middlename = "Lily";    //middlename属性被扩充到stooge对象
stooge.lastname = "Harry";    //lastname的值变为Harry

 引用:

对象通过引用来传递,它们永远不会被复制:

var x = stooge;
x.middlename = "change";
document.writeln(stooge.middlename);    //change

 原型:

每个对象都连接到一个原型对象,并且它可以从中继承属性。所有通过对象字面量创建的对象都连接到Object.prototype,它是javascript的标配对象。

当你创建一个新对象,你可以选择某个对象作为它的原型。我们将给Object增加一个create方法,来实现创建一个使用原对象作为其原型的新对象。

if(typeof Object.beget !== 'function'){
	Object.create = function(o){
		var F = function(){};
		F.prototype = o;
		return new F();
	}
} 

 一个使用例子:

var another_stooge = Object.create(stooge);
document.writeln(another_stooge["first-name"]);   //Jerome

委托:

原型连接只有在检索时才会被用到。如果我们尝试去获取对象的属性值,但该对象没有此属性名,那么javascript会尝试从原型对象获取此属性值,如果该原型对象也没有,那么再从它的原型中寻找,依次类推,知道达到终点Object.prototype,如果想要的属性完全不在原型链中,那么结果返回undefined。这个过程为委托。

原型关系是一种动态的关系,如果我们添加了一个属性到原型中,该属性立即对所有基于该原型创建的对象可见。

stooge.professin = 'actor'
another_stooge.profession    //actor

 原型连接在更新时不起作用:

another_stooge.profession = 'actress';
stooge.profession    //actor

 反射:

typeof 操作符对确定属性很有帮助

typeof stooge.constructor    //function
typeof stooge.manifest    //undefined

 有两种方法处理掉不需要的属性。第一个是让程序做检查丢弃值为函数的属性。

另一种方式是使用hasOwnProperty方法,如果对象拥有独有属性返回true。

枚举:

for in语句可以遍历一个对象的所有属性,包括函数,和我们可能不关心的原型属性。有必要进行过滤

stooge.func:function(){alert('hi')};
for(values in stooge){
if(typeof stooge[values]!== 'function'){
	document.writeln(values+':'+stooge[values]);
	}
}
//lastname:Harry
//middlename:change
//profession:actor

 属性名的顺序是不确定的,为了确保属性以特定的顺序出现,就要避免使用for in,创建一个数组,使用for

var properties = ['first-name','middlename','lastname','profession'];
for(i=0;i<properties.length;i++){
document.writeln(properties[i]+':'+stooge[properties[i]]);
}
//first-name:Jerome
//middlename:change
//lastname:Harry
//profession:actor

 删除:

delete运算符可以用来删除对象的属性。如果对象包含此属性,该属性就会被移除,它不会触及原型链的任何对象,删除对象的属性可能让来自原型链的属性显露出来

delete another_stooge.profession
document.writeln(another_stooge.profession);
//actor为stooge的属性值

 怎样减少全局变量的污染:

为你的应用只创建一个唯一的全局变量

var MYAPP = {};

 该变量变为容器

添加变量的方式

MYAPP.stooge = {
    "first-name":"joe",
    "lastname":"Howard"
};

只要把全局性的资源都纳入一个名称空间之下,你的程序与其他应用程序、组件或类库之间发生冲突的可能性会显著降低。

在函数中使用闭包来进行信息隐藏也是减少全局污染的方法

 

 

 

 

 

分享到:
评论

相关推荐

    《JavaScript语言精粹》.pdf

    《JavaScript语言精粹》这本书是深入理解这一语言的宝贵资源,它涵盖了JavaScript的核心概念和技术,旨在帮助读者掌握这门语言的精髓。 在描述中提到的"JavaScript语言精粹 包含pdf 与 epub"表明,这本书提供了两种...

    JavaScript 语言精粹(修订版,文字版+扫描版)

    本书通过对JavaScript语言的分析,甄别出好的和坏的特性,从而提取出相对这门语言的整体而言具有更好的可靠性、可读性和可维护性的JavaScript的子集,以便你能用它创建真正可扩展的和高效的代码。 雅虎资深...

    JavaScript语言精粹pdf

    《JavaScript语言精粹》是一本深受开发者喜爱的经典书籍,它深入浅出地讲解了JavaScript的核心概念和最佳实践。这本书的中文高清PDF版本包含了详细的注解和书签,为读者提供了便利的学习路径。作为标签,"JavaScript...

    JavaScript语言精粹 中文高清PDF

    《JavaScript语言精粹》是一本深受开发者欢迎的权威书籍,旨在深入探讨JavaScript这门重要的编程语言,帮助初学者和有经验的程序员掌握其核心概念和最佳实践。这本书以中文高清PDF的形式提供,使得读者可以方便地...

    JavaScript 精粹读书笔记(1,2)

    在《JavaScript 精粹》一书中,作者深入探讨了JavaScript的特性和最佳实践,旨在帮助开发者区分和利用其精华部分,同时避免那些可能会引起问题的鸡肋特性。 首先,JavaScript的某些特性带来了麻烦,因为其规范的不...

    JavaScript语言精粹.pdf.zip

    JavaScript,简称JS,是Web开发领域中最常用的一种脚本语言,尤其在前端开发中占据核心地位。这本书《JavaScript语言精粹》无疑是深入理解和掌握这门语言的重要参考资料。它旨在帮助开发者掌握JavaScript的核心概念...

    JavaScript语言精粹.修订版 Javascript:The Good Parts 中英 pdf

    JavaScript,作为一种广泛应用于Web开发的脚本语言,已经成为现代互联网技术不可或缺的一部分。"JavaScript语言精粹.修订版",即《Javascript: The Good Parts》,是由知名的计算机科学家Douglas Crockford所著,这...

    JavaScript语言精粹

    在《JavaScript语言精粹》中,Crockford最终从迷雾中挖掘出一大堆良好意图和愚蠢错误,让您仔细体会JavaScript真正优雅的部分,其中包括: 语法 继承 方法 对象 数组 样式 函数 正则表达式 优美的特性 在...

    JavaScript语言精粹 修订版 中文高清PDF

    《JavaScript语言精粹 修订版》是一本深受前端开发者喜爱的经典教材,专注于讲解JavaScript的核心概念和最佳实践。这本书深入浅出地介绍了JavaScript的精髓,帮助读者掌握这门强大的脚本语言,尤其对于前端开发人员...

    JavaScript语言精粹_修订版【高清】带书签 PDF

    "JavaScript语言精粹_修订版【高清】带书签 PDF"是一本专门为JavaScript初学者和进阶者编写的指南,旨在帮助读者深入理解并掌握这种强大的脚本语言。 该书修订版可能包含对原版内容的更新和优化,以适应不断发展的...

    JavaScript语言精粹(修订版)

    "JavaScript语言精粹(修订版)"是一本深入探讨JavaScript编程精髓的书籍,旨在帮助开发者掌握其核心概念、最佳实践以及常见陷阱。这本书对初学者和经验丰富的开发者都具有很高的价值,能够提升对JavaScript的理解和...

    JavaScript语言精粹 修订版 pdf

    JavaScript语言精粹修订版pdf是许多朋友都在寻找的一款学习资料,在这里能够为您详细的介绍JS这门计算机语言,作者从语法、对象、函数、继承、数组、正则表达式、方法、样式和优美的特性这9 个方面来呈现这门语言...

    javascript语言精粹_修订版带书签.pdf

    JavaScript,一种广泛应用于Web开发的脚本语言,是前端开发的核心技术之一。"JavaScript语言精粹_修订版带书签.pdf" 这本书是开发者深入理解JavaScript语法、特性及最佳实践的重要参考资料。书中的修订版意味着它...

    web学习笔记 —— javascript基础

    这篇“web学习笔记——javascript基础”将带你走进JavaScript的世界,理解其基本概念和常用语法。 JavaScript语法基础: 1. 变量:在JavaScript中,变量用于存储数据。声明变量使用`var`关键字,例如`var myVar = ...

Global site tag (gtag.js) - Google Analytics