`
gyht0808
  • 浏览: 115545 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JavaScript读书笔记五

阅读更多

 

我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个对象,他的用途是包含可以由特定类型的所有实例共享的属性和方法。

 

function Person() {
};
Person.prototype.name = "Miles";
Person.prototype.age = 24;
Person.prototype.job = "Engineer";
Person.prototype.sayName = function() {
    alert(this.name);
};

var person1 = new Person();
person1.sayName(); // "Miles"

var person2 = new Person();
person2.sayName(); // "Miles"

alert(person1.sayName() == person2.sayName()); // true
 

这些方法和属性直接添加到了Person的prototype属性中,构造函数变成了空函数。

新对象的这些属性和方法是由所有实例共享的。

只要创建了一个新函数,就会根据一组特定的规则为该函数创建一个prototype。在默认情况下,所有prototype属性都会自动获得一个constructor属性,这个属性包含一个指向prototype属性在所函数的指针。

创建了自定义的构造函数之后,其原型属性默认只会取得constructor属性,其他方法都是从Object继承而来。

在所有实例中都可以通过isPrototypeOf()方法来确定对象之间是否存在关系。

 

 

alert(Person.prototype.isPrototypeOf(person1)); // true

每当代码读取某个对象的某个属性时,都会去搜索给定名字的属性。先从实例中开始,找到返回,如果没有再从原型中搜索,找到返回。

 

function Person() {
};
Person.prototype.name = "Miles";
Person.prototype.age = 24;
Person.prototype.job = "Engineer";
Person.prototype.sayName = function() {
    alert(this.name);
};

var person1 = new Person();
var person2 = new Person();

person1.name = "Jenny";
person1.sayName(); // "Jenny" ---来自实例
person2.sayName(); // "Miles" ---来自原型

delete person1.name;
person1.sayName(); // "Miles" ---来自原型
 

上面代码可以看出,当为对象实例添加一个属性时,这个属性会屏蔽原型对象中保持的同名属性,但是不会修改那个属性。

 

简单的原型语法

 

function Person() {
}
Person.prototype = {
    name : "Miles",
    age : 29,
    job : "Engineer",
    sayName : function() {
        alert(this.name);
    }
};
 

这种方法本质上重写了prototype对象,因此constructor属性也就变成了对象的constructor属性(指向Object构造函数),不在指向Person函数。

 

我们对原型对象所做的任何修改都能够立即从实例上反映出来--即使是先创建了实例后修改原型也照样如此。但是如果是重写整个原型对象就不行了。

 

 

function Person() {
}
var person = new Person();
Person.prototype = {
    constructor : Person,
    name : "Miles",
    age : 29,
    job : "Engineer",
    sayName : function() {
        alert(this.name);
    }
};
person.sayName(); // error
 

个人博客YYer 同步更新

分享到:
评论
9 楼 liangws 2011-03-29  
<p> </p>
<p>但是如果是重写整个原型对象就不行了。<br><br>Js代码 <br>function Person() {  <br>}  <br>var person = new Person();  <br>Person.prototype = {  <br>    constructor : Person,  <br>    name : "Miles",  <br>    age : 29,  <br>    job : "Engineer",  <br>    sayName : function() {  <br>        alert(this.name);  <br>    }  <br>};  <br>person.sayName(); // error<br><br>动态修改原型引擎好像是不能用字面量来修改</p>
<p> </p>
8 楼 steafler 2011-03-15  
头像不错哟
7 楼 gyht0808 2011-03-15  
yangleisx 写道
加95443740 一起学习java

此乃麻花藤的号?
6 楼 yangleisx 2011-03-15  
加95443740 一起学习java
5 楼 shichuanliujie 2011-03-14  
很好,我觉得还可以,基础要扎实
4 楼 zhaodidong 2011-03-11  
原型不是属性

它是一个对象

构造函数以它为原形new 对象
3 楼 superobin 2011-03-09  
如果是纯讲语言的话我想应该是讲prototype链或者开下一章function
如果是想扩展的话可能讲一下基于prototype的继承机制实现

纯猜测。呵呵
2 楼 gyht0808 2011-03-09  
superobin 写道
居然猜对了 虽然有事后诸葛亮的嫌疑- -

你可以猜下一篇,哈哈,还没写
1 楼 superobin 2011-03-09  
居然猜对了 虽然有事后诸葛亮的嫌疑- -

相关推荐

    javascript读书笔记

    JavaScript是Web开发中不可或缺的一部分,它是一种轻量级的解释型编程语言,广泛用于网页和网络应用。在学习JavaScript时,了解其基本概念至关重要。以下是一些关键知识点的详细说明: 1. 变量: 在JavaScript中,...

    javascript 高级程序设计 读书笔记(3)

    这篇读书笔记主要聚焦在第三部分,这部分通常涵盖了更高级的主题,如对象、原型、闭包以及模块化等。结合提供的"listutil.js"文件,我们可以深入探讨JavaScript中的实用工具函数和编程技巧。 首先,JavaScript的...

    JavaScript读书笔记

    该份文档于2004年整理,前段时间翻阅出来看,颇有收益,方便初学者的入门学习,也可以作为索引文件进行查阅、

    JavaScript学习笔记

    JavaScript学习笔记主要涵盖...通过阅读和理解这篇"JavaScript学习笔记",你可以逐步提升JavaScript技能,从而更好地开发网页和应用程序。记得实践是检验真理的唯一标准,多写代码,多解决问题,才能真正掌握这门语言。

    javascript 笔记 适合初学者 jquery chm 资料

    通过阅读笔记和深入学习jQuery CHM,初学者可以在短时间内提升自己的前端开发技能。 此外,实践是检验学习效果的最好方式。初学者应该尝试自己动手编写简单的JavaScript程序和使用jQuery实现动态效果,这样不仅可以...

    javascript学习笔记

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,广泛用于数据传输。 #### jQuery jQuery是一个快速、简洁的JavaScript库,简化了HTML文档遍历、...

    JavaScript_DOM_编程艺术读书笔记

    ### JavaScript DOM 编程艺术读书笔记关键知识点解析 #### 一、JavaScript简史与相关技术简介 - **XHTML(可扩展的超文本标记语言)**:这是一种更加严格、更加强大的HTML版本,旨在提高网页的可读性和可扩展性。 ...

    JavaScript笔记第一章—课程准备.pdf

    注释不会被浏览器执行,但可以被开发者阅读。 JavaScript可以通过不同的方式引入到HTML页面中,主要有三种方法:行内引入、外部引入和内部引入。行内引入是通过在HTML标签中直接写入JavaScript代码实现,如`('我要...

    前端开发必备JavaScript(含源码课件笔记总结)

    课程中的源码分析部分,可能是对一些经典库或框架的源码解读,如jQuery、lodash等,通过阅读源码,可以深入理解JavaScript的高级技巧和优化手段,提升代码质量。 八、笔记总结 笔记部分是对整个学习过程的记录和...

    Javascript 读书笔记索引贴

    基础篇 Javascript学习笔记1 数据类型 Javascript学习笔记2 函数 Javascript学习笔记3 作用域 Javascript学习笔记4 Eval函数 Javascript学习笔记5 类和对象 Javascript学习笔记6 prototype的提出 Javascript学习...

    李炎恢JavaScript-pdf文档笔记

    5. **JavaScript框架与库**:笔记可能提及了流行的JavaScript库如jQuery,以及框架如React、Vue.js、Angular,介绍它们的基本用法和设计理念。 6. **ES6新特性**:ECMAScript 6(简称ES6)引入了许多新特性和语法糖...

    JAVASCRIPT从入门到精通读书笔记.pdf

    JAVASCRIPT从入门到精通读书笔记.pdf

    蓝杰JavaScript学习笔记

    《蓝杰JavaScript学习笔记》是一份综合性的JavaScript学习资料,主要涵盖了JavaScript在网页动态操作、DOM操作以及事件处理等方面的基础知识。这篇笔记通过多个实例文件,如`dynamicCreateTable.htm`、`...

    JavaScript学习笔记-适合初学者

    本学习笔记专为初学者设计,旨在帮助新接触JavaScript的人快速掌握这门语言的核心概念和实用技巧。 首先,"JavaScript特效.chm"可能是一份关于JavaScript实现的各种网页特效的教程。这些特效可能包括图片轮播、下拉...

    javascript权威指南笔记

    JavaScript权威指南笔记是深入理解和掌握JavaScript这门编程语言的重要参考资料。这份笔记包含了作者在研读《JavaScript权威指南...通过阅读和理解这些笔记,你可以提升自己的JavaScript技能,更好地应对各种开发场景。

    狂神Java学习笔记————前端入门——html、css、JavaScript学习代码

    通过阅读这些笔记,学习者不仅可以掌握前端开发的基本技能,还能了解到实际开发中可能会遇到的问题和解决策略。 文件列表中的"CSS1"和"CSS2"可能包含了一些CSS的实例或练习,"html"文件夹可能包含了HTML页面示例,...

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

    JavaScript是一门在Web开发中不可或缺的编程语言,它被用于创建交互式的网页内容和增强用户体验。虽然它广受欢迎,但同样伴随着许多争议和挑战。在《JavaScript 精粹》一书中,作者深入探讨了JavaScript的特性和最佳...

Global site tag (gtag.js) - Google Analytics