`
bbiao
  • 浏览: 72300 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

JavaScripte中的Prototype机制(一)

阅读更多

JavaScript不是一个真正的OO语言,但是通过提供prototype对象实现了一些OO的特性。本文是作者在使用JS中OO特性的一些心得体会。

下面我们首先来看一下如何在JavaScript中定义一个类(不使用prototype):

function Base()
...{
        
this.name = "name";
        
this.show = function() 
        
...{
                alert(
this.name);
        }

}

以上这段代码中,我们声明了一个类Base,并且为该类添加了一个成员变量name和一个成员函数show,通过经下代码就可以实现生成该类的一个实例:

var base = new Base();
base.show();

但是这种声明类的方法有一个明显的不足之处,每当新建该类的一个实例时,我们都会创建所有方法的一个副本,也就是说,所有类的show方法是在内存中的不同地址的,而且类的成员变量的声明与定义被放到了一起,比较容易产生混淆。下面,我们通过引入prototype机制来实现清晰的类定义。

function Base()
...{
    
// Constructor here.
    // ...
}


Base.prototype 
= 
...{
    name: 
"base",
    show: 
function()
    
...{
        alert(
this.name);
    }

}

现在我们来看new的执行过程:
1、创建一个新的对象,并让this指针指向它;
2、将函数的prototype对象的所有成员都赋给这个新的对象;
3、执行函数体,对这个对象进行初始化操作;
4、返回(1)中创建的对象。
现在在new的执行过程当中,多了用prototype来初始化对象的过程,这也和prototype的字面意思相符,它是所对应类的实例的原形。这个初始化过程发生在函数体(constructor)执行之前,所以在函数体内部可以调用prototype中定义的属性和方法。

分享到:
评论

相关推荐

    prototype.js

    "Prototype.js"是一个著名的JavaScript库,它为JavaScript编程提供了丰富的功能和便利,特别是在处理AJAX(异步JavaScript和XML)请求时。这个库由Sam Stephenson创建,旨在简化JavaScript开发,提高代码的可读性...

    javascript面向对象要点总结

    在JavaScript中,面向对象编程(OOP)是一种广泛采用的编程范式,它允许开发者创建可重用、模块化的代码。本文将深入探讨JavaScript面向对象的关键概念,包括构造函数、原型链、继承以及作用域等。 #### 构造函数与...

    Javascript中55个经典技巧

    JavaScript是Web开发中不可或缺的一部分,它为网页添加了动态功能,让交互变得生动有趣。这篇博客文章"Javascript中55个经典技巧"分享了一系列实用的编程技巧,旨在帮助开发者提升JavaScript编码效率和代码质量。...

    JavaScript使用类似break机制中断forEach循环的方法

    在JavaScript编程中,`forEach`是一个常用的数组迭代方法,它允许我们遍历数组中的每一个元素并执行某个函数。然而,与传统的`for`循环不同,`forEach`不直接支持`break`语句来中断循环。这是因为`forEach`的设计...

    javascript的经典面试题汇总

    - **解析**:`with`是JavaScript中的保留关键字,用于在特定的作用域内执行一组语句。 - **选项B**: `parent` - **解析**:`parent`不是JavaScript的保留关键字。它通常用于引用父级窗口对象,在浏览器环境中使用...

    JavaScript开发技术大全.zip

    6. **原型链与继承**:JavaScript采用原型链实现继承,每个对象都有一个内部属性[[Prototype]],可以通过__proto__属性或Object.getPrototypeOf方法访问。理解原型和继承机制对于面向对象编程至关重要。 7. **ES6及...

    JavaScript学习笔记包括正则表达式、异常处理、调试、关键字等

    正则表达式是一种强大的文本处理工具,在JavaScript中主要用于字符串的操作,如查找、替换等。 **1.2 基本语法** 正则表达式的基本格式为:`/pattern/modifiers` - `pattern`:定义了正则表达式的模式。 - `...

    SWFUpload工作方式解读

    它提供了一种机制来捕获并处理上传过程中的错误。 ```javascript SWFUpload.prototype.uploadError = function(fileID, errorCode, message) { // 处理上传错误 }; ``` **事件处理器定义:** ```javascript swfu =...

    javascript 宝典

    - **定义与作用**:JavaScript是一种轻量级的脚本语言,主要用于网页交互性开发,是实现网页动态效果的重要工具之一。 - **发展历程**:由Netscape公司的Brendan Eich在1995年设计开发,并逐渐成为Web开发的标准配置...

    javaScript面试精选

    - JavaScript中继承主要通过原型链(`prototype`)来实现。通过设置一个对象的`__proto__`属性指向另一个对象,就可以实现继承。 **8. JavaScript怎样选中一个checkbox,怎样设置它无效?** - 选中一个checkbox: `...

    JavaScript.Patterns

    JavaScript作为一种广泛使用的脚本语言,在Web开发中占据着举足轻重的地位。随着JavaScript应用的复杂度不断提高,有效地运用设计模式成为了提高代码质量、增强可维护性的重要手段之一。 #### 二、设计模式的重要性...

    初学prototype,发个JS接受URL参数的代码

    对于初学者来说,掌握如何使用JavaScript来解析URL中的查询字符串是非常重要的技能之一。本文将详细介绍如何使用Prototype框架来实现这一功能,并对相关知识点进行深入探讨。 #### 二、理解URL与查询字符串 1. **...

    WEB开发 之 JavaScript Number 对象.docx

    6. `prototype`: 这是一个内部属性,用于原型链机制,允许向Number类型添加自定义方法。 7. `constructor`: 指向创建当前对象的函数,对于Number对象来说,通常是Number构造函数。 此外,Number对象还提供了一些...

    JavaScript语言精粹

    - 原型链:用于查找对象属性的机制,每个对象都有一个内部的[[Prototype]]属性指向它的原型对象。 6. **数组**:数组是一种特殊类型的对象,用于存储多个值。 - 数组方法:`.push()`、`.pop()`、`.shift()`、`....

    2011百度实习生招聘笔试题-web前端开发

    `prototype`是JavaScript中实现面向对象特性的重要机制,它允许我们给对象添加方法或属性。`prototype.name`通常用于定义构造函数的实例属性,比如在示例中`a.prototype.name = '阿里巴巴'`就是给`a`构造函数的所有...

    Javascript中最常用的55个经典技巧

    JavaScript,作为全球最广泛使用的编程语言之一,拥有丰富的特性与技巧。以下将详细解析JavaScript中最常用的55个经典技巧,帮助你提升编程效率和代码质量。 1. **变量声明**:使用`let`和`const`代替`var`,以避免...

    JavaScript中判断函数、变量是否存在

    JavaScript 是一种动态类型的语言,这意味着在运行时变量和函数的类型可以被改变。...在实际开发中,也可以借助现代JavaScript框架提供的生命周期钩子和组件通信机制来避免直接的函数和变量存在性检查。

    前端大厂最新面试题-setState.docx

    React中的setState执行机制详解 在 React 中,setState 是一个非常重要的方法,它用于更新组件的状态从而引发视图的更新。在本文中,我们将深入探讨 setState 的执行机制,并分析其异步更新和同步更新的差异。 一...

    javascript属性方法集合,自己认为重要的都有

    JavaScript是一种广泛用于网页和网络应用的编程语言,它在网页开发中扮演着核心角色,用于实现动态交互和数据处理。本文将深入探讨标题和描述中提及的一些重要JavaScript属性和方法。 ## 全局对象Global 全局对象...

    几句话带你理解JS中的this、闭包、原型链

    原型链 所有对象都是基于Object.prototype,Object.prototype...要理解原型链机制的话,首先得知道根本原因:JavaScript中的对象都有一个内置属性[[Prototype]],这个属性和非标准的__proto__属性一样,__proto__在E

Global site tag (gtag.js) - Google Analytics