`
wu_quanyin
  • 浏览: 208271 次
  • 性别: Icon_minigender_1
  • 来自: 福建省
社区版块
存档分类
最新评论

JavaScript中prototype/constructor的理解

阅读更多

一,prototype(对象)(原型链)

可使javascript拥有

1,重写

2,添加方法

3,继承的机制

 

prototype继承原理:

每一个方法的创建,都有着一个单例的对象functionName.prototype, 在使用这个方法创建的每一个对象,该prototype都会赋值给他,(prototype里面包含了一些属性,方法包含construtor)

也正因为每个对象都共享一个prototype,所以可以操作这个prototype,

1,将你类对象赋给他达到继承的目的,看下面文章

2,可在该prototype上,重写方法,或者添加方法

 

1,重写

如:Array.prototype.push=function(){
	//execute your's function
}

2,添加方法

Array.prototype.newMethod=function(){
	//add new method for after use
}

3,继承

//---------------下面实例实现

 

4,prototype的了解.

function F1(){
}

F1.prototype.run=function(){
	alert("execute run.f1 method");
}

var a1=new F1();
var a2=new F1();
if(a1.run()===a2.run());//推出prototype是单例的对象,每一个对象的创建prototype相同

 

二, constructor(方法):说明本身是由怎么构造而成的

var arrayObject=new Array();
arrayObject.constructor;//Array
Array.constructor;//Function
Object.constructor;//Function   Object.prototype为null
Function.constructor;//Function(最高级别即本身)

  可跟prototype应用操作:

如arrayObject.construcotr.addmethod=function(){}可这样为Array提供方法

 

使用prototype与constructor进行完整的继承封装

//为了达到封装的完善性,引申以下问题
//引申问题一,保证使每一个对象object.construcotr能够找到自己(function)
//引申问题二,保证使之通过suberObject能找到父类

//问题一例子
function Parent(){
	this.log=function(){
		document.writeln("this is parent log.....<br>");
	}
}
function Suber(){
	this.log=function(){
		document.writeln("this is suber log......<br>");
	}
}

var suber1=new Suber();
//可得到子类本身
document.writeln(suber1.constructor);
//故当其中有一个被改变时,另一个也会被改变.construcotr是相应的prototype中的一个属性,以下访问是同一个属性
document.writeln(suber1.constructor===Suber.prototype.constructor);
document.writeln("<br>--------------------------------------------<br>");


//当继承时.....
Suber.prototype=new Parent();
var suber2=new Suber();
//得到的是父类本身,丢失了自己的构造函数,故"问题一"出现
document.writeln(suber2.constructor);
document.writeln("<br>--------------------------------------------<br>");


//解决"问题一"方法
Suber.prototype=new Parent();
Suber.prototype.constructor=Suber;
var suber3=new Suber();
document.writeln(suber3.constructor);
document.writeln("<br>--------------------------------------------<br>");


//这样一来,引申出"问题二",我们获取不到parent的本身方法
//故只能采用定义一个属性的方式来存储父类
//解决"问题二"方法
Suber.prototype=new Parent();
Suber.superClass=Parent;//每一级别都设置该属性进行存储父类方法
Suber.prototype.constructor=Suber;
var suber4=new Suber();
document.writeln(suber4.constructor);
document.writeln("<br>--------------------------------------------<br>");
document.writeln(Suber.superClass);
 

//可参考extjs中的继承封装....

 

参考文章:http://hi.baidu.com/maxwin2008/blog/item/8da86102c1ceda034bfb51a3.html

0
1
分享到:
评论

相关推荐

    JavaScript中的prototype和constructor简明总结

    总结来说,constructor 属性和 prototype 属性在 JavaScript 中非常关键,它们共同构成了 JavaScript 原型继承的基础。理解这两个属性的工作原理对于掌握 JavaScript 面向对象编程及其继承机制至关重要。

    javascript new后的constructor属性.docx

    ### JavaScript中的`new`操作与`constructor`属性详解 #### 一、`new`操作符的理解 在JavaScript中,`new`操作符被用于创建一个由构造函数定义的新实例对象。当使用`new`关键字调用一个构造函数时,会执行以下步骤...

    JavaScript的prototype

    JavaScript中的`prototype`是一个核心概念,它涉及到对象继承和函数原型。在JavaScript中,每创建一个函数,该函数就会自动获得一个名为`prototype`的属性,这个属性是一个对象,用于实现对象间的继承。同时,每个...

    prototype,__proto,constructor

    分析javascript中 prototype __proto__ constructor之间的关系

    JavaScript中prototype的使用

    JavaScript中的`prototype`属性是实现面向对象编程的关键概念之一,尤其在JavaScript中,它用于实现对象的继承。本文将深入探讨`prototype`的含义、作用以及如何使用。 1. **什么是prototype** 在JavaScript中,每...

    深化浅析JavaScript中的constructor_.docx

    深化浅析JavaScript中的constructor_ constructor 属性是 JavaScript 中的一种特殊属性,它返回对创建此对象的数组函数的引用。下面我们来深入浅析 JavaScript 中的 constructor。 constructor 属性是一个非标准...

    了解JavaScript中的prototype (实例)

    JavaScript中的`prototype`是理解面向对象编程的关键概念之一。它是一种机制,允许对象共享属性和方法,从而实现代码复用。在JavaScript中,每个函数(包括构造函数)都有一个内置的`prototype`属性,这个属性指向一...

    深入浅析JavaScript中的constructor

    在JavaScript中,`constructor`属性是一个非常重要的概念,它与对象和类的构造函数紧密相关。构造函数是一种特殊类型的函数,通常用于初始化新创建的对象。当我们谈论`constructor`时,我们指的是一个对象实例的`...

    JavaScript中的prototype(原型)属性研究

    JavaScript中的prototype属性是理解面向对象编程的关键概念之一。在JavaScript中,每个函数都有一个prototype属性,这个属性指向一个对象,这个对象就是所谓的原型对象。当我们创建一个函数实例时,实例会自动获取一...

    JS:typeof instanceof constructor prototype区别

    本文将深入探讨四种常用的方法来识别和判断JavaScript中的数据类型:`typeof`、`instanceof`、`constructor`以及`prototype`。 ### 1. `typeof` `typeof`操作符是最常见的类型检测方式之一,它返回一个表示未经计算...

    理解Javascript_11_constructor实现原理

    在理解了JavaScript中的对象模型和constructor属性的实现原理之后,我们可以通过这些知识来更好地理解JavaScript的工作机制。这包括如何利用原型链来实现对象的继承,以及如何通过constructor属性来追踪对象的构造...

    prototype小例子

    在JavaScript中,`prototype`是一个非常重要的概念,它关乎着对象继承和函数的特性。`prototype`是每个函数(在JavaScript中,函数也是对象)都有的一个属性,用于实现对象间的原型继承。在这个"prototype小例子"中...

    JavaScript类和继承 constructor属性

    这个特性对于理解JavaScript中的类和继承机制至关重要。 在JavaScript中,当使用new操作符和构造函数创建对象实例时,该对象实例会继承构造函数的prototype对象的属性和方法。每个函数都有一个prototype属性,而...

    prototype自己做的一个例子

    在JavaScript中,`prototype`是一个非常重要的概念,它关乎到对象继承和函数原型。当我们谈论`prototype`时,我们实际上是在讨论JavaScript中的面向对象编程特性。在这个“prototype自己做的一个例子”中,我们将...

    深入分析js中的constructor和prototype

    在JavaScript中,`constructor`和`prototype`是两个关键概念,它们构成了JavaScript面向对象编程的基础。理解这两个概念对于深入学习JavaScript至关重要。 首先,`constructor`是函数的一个属性,它指向创建该对象...

    javascript中类和继承(代码示例+prototype.js)

    本文将深入探讨JavaScript中的类和继承,并结合`prototype.js`文件中的示例进行解析。 ### 类的概念与模拟 在JavaScript中,我们通常使用函数来模拟类的行为。一个函数可以看作是一个类的定义,通过`new`关键字来...

    JavaScript中几个重要的属性(this、constructor、prototype)介绍

    在JavaScript编程中,`this`、`constructor`和`prototype`是三个核心概念,它们在实现对象的创建和继承机制中扮演着至关重要的角色。理解这些概念对于深入学习JavaScript语言和编写高质量的面向对象代码至关重要。 ...

    Javascript中的封装与继承

    在这个文档中,我们将深入探讨JavaScript中的封装和继承这两个核心概念,帮助你更好地理解和应用这些知识。 封装是面向对象编程的基本原则之一,它涉及到如何组织和保护代码,以实现数据隐藏和功能模块化。在...

Global site tag (gtag.js) - Google Analytics