在java中,我们可以这么实例化一个对象
MyClass myclass1 = new MyClass();
在javascript中,我们可以这么做
var myclass1 = new MyClass();
但是在javascript中,我们并没有定义MyClass类,而是定义了一个同名的函数。也就是一个构造函数
function myClass(name,height){
this.name = name;
this.height = height;
}
然后,我们就可以这么调用
var myclass1 = new myClass("lds",170);
alert(" name :" + myclass1.name + "\n height:" + myclass1.height );
在构造函数中,设置为this的属性的任何东西都可以作为对象的一个成员来使用。我们可以在构造函数中加入函数的声明。
function myClass(name,height){
this.name = name;
this.height = height;
this.tellHeight = function(){
alert(" name :" + this.name + "\n height:" + this.height );
};
}
var myclass1 = new myClass("lds",170);
myclass1.tellHeight();
每个javascript对象都是相同的基类实例。所以,有可能在运行时给对象分配任意的属性。
写到这里,我们已经看到了类是怎么创建的,但是怎么继承呢?
javascript是没有继承的概念的。但是提供了一些实现方法,使得看起来我们实现了内部继承
prototype是javascript对象的属性,有面向对象语言中没有对等物。函数和属性可以与构造函数的prototype关联起来。然后prototype和new关键字协同工作,当使用new调用函数时,函数prototype的所有属性和方法会附加到结果对象上。
function myClass(name,height){
this.name = name;
this.height = height;
}
myClass.prototype.tellHeight = function(){
alert(" name :" + this.name + "\n height:" + this.height );
}
var myclass1 = new myClass("lds",170);
myClass1.tellHeight();
我们像以前一定声明了构造函数,然后向prototype增加函数。当我们创建一个对象的实例时,函数会附加在上面。关键字this是在运行时确定了对象的实例,一切都运转良好.
在声明构造函数之后,我们才可以引用prototype。对象只能继承在调用构造函数之前已经增加到prototype属性的东西。
用prototype属性扩展内建类
看下面的例子
Array.prototype.indexOf = function(obj){
var result = -1;
for(var i = 0; i< this.length; i++){
if(this[i] ) = obj){
result = i;
break;
}
}
return result;
}
以上代码为Array对象提供了一个新的函数,我们经常有用到的indexOf。
对象的使用过程之中,随时可以使用prototype函数。但是建议prototype只在程序的开始使用一次,以便壁免不必要的混乱。特别是在团队中使用中javascript对象。
我们已经知道,javascript中是没有直接实现类继承的东西的,但是我们可以通过prototype来实现
prototype的继承
分享到:
相关推荐
构造函数模式是JavaScript中的一种重要设计模式,用于创建对象。本文将深入探讨构造函数模式及其应用。 构造函数模式的核心在于使用函数来创建具有相似属性和方法的对象。在JavaScript中,函数可以作为构造函数来...
在JavaScript中,构造函数常用于创建类的实例。 当涉及到构造函数和实例时,有几个知识点是必须掌握的: 1. 构造函数与实例的关系: 构造函数是创建特定对象类型的模板或蓝图。它定义了在创建对象实例时应该初始...
每一个函数都可以用作构造函数,而由构造函数创建的对象则共享该构造函数的原型(`prototype`)属性中的属性和方法。这种方式使得JavaScript能够高效地管理内存并实现灵活的继承机制。 #### 构造函数 构造函数是...
原型对象是通过构造函数创建的,在构造函数中,我们可以使用 `prototype` 属性来访问原型对象。 实例 实例是指通过构造函数创建的对象。实例继承了原型对象的属性和行为,并可以拥有自己的属性和方法。 构造函数...
`set-prototype-of`库的核心就是模拟`Object.setPrototypeOf`的行为,通过一些底层的技巧和技巧来实现这个功能,比如使用`__proto__`属性或者构造函数的原型等。 在`set-prototype-of-master`这个压缩包中,通常...
每个由构造函数创建的对象实例都有一个`__proto__`属性,它引用了构造函数的`prototype`。这样,当试图访问对象实例的一个属性时,如果在实例本身找不到,JavaScript会沿着`__proto__`链向上查找,直到找到该属性...
- 每个类的构造函数、公共方法和属性,以及它们的使用示例。 - 特殊函数,如`document.onReady`,它在页面加载完成后执行指定的函数。 - 如何利用Prototype进行事件监听、Ajax通信、DOM操作等实践操作。 四、学习与...
在JavaScript中,每个函数都有一个`prototype`属性,这个属性是一个对象,当创建一个新的对象实例时,该实例会继承`prototype`对象的属性和方法。因此,`prototype`是实现JavaScript继承的主要机制。 其次,`__...
2. prototype与__proto__:两者都与原型链有关,prototype是构造函数的属性,__proto__是实例对象的属性,它们连接了对象间的继承关系。 3. 类与继承:ES6引入了class关键字,虽然在语法上更像传统的面向对象语言,...
构造函数,原型和此JavaScript基础目标解释“ this”关键字的四个原理,并举例说明每个解释描述并使用原型,构造函数new关键字和伪古典继承来构建对象介绍为了完成这些任务,您将需要新获得的有关构造函数,原型和...
1. **创建对象的构造函数**:首先,我们需要创建一个构造函数(如果有的话),这个构造函数将用于创建具有特定原型的对象。 ```javascript function MyClass() {} ``` 2. **定义getter**:然后,我们可以在`...
2. 将这个新对象的[[Prototype]]链接到构造函数的原型对象。 3. 将构造函数的作用域绑定到新创建的对象,即`this`关键字在这个函数内部将指向这个新对象。 4. 执行构造函数体内的代码,通常用于为新对象添加属性和...
通过`prototype`属性,我们可以为构造函数添加方法,使得所有实例都可以访问。 **前后端交互** 在Web应用中,前端与后端的数据交换是必不可少的。通常,HTTP协议的无状态性导致了每次请求都需要携带状态信息,而...
真正的原因是:一个对象的constructor是它的构造函数的prototype.constructor,而每一个函数都有一个prototype,默认情况下,这个prototype有一个constructor属性,指向的是它自己。 我觉得Javascript的设计本意是让...
同时,`Prototype.Class`类还支持实例化、构造函数和初始化方法。 3. **DOM操作** DOM(文档对象模型)操作是Prototype的核心之一。`Element`对象提供了一系列便捷的方法,如`$(selector)`用于选取DOM元素,`...
- 对象创建:字面量语法、构造函数 - 属性访问:点号和方括号 - 原型链:`__proto__`、`prototype`、`Object.getPrototypeOf` - 原型方法:`hasOwnProperty()`, `isPrototypeOf()`, `propertyIsEnumerable()` 3...
在JavaScript编程中,"setter-on-constructor-prototype.rar_The Next"这个主题涉及到对象属性的访问和修改,尤其是关于构造函数原型链上的setter方法。在描述中提到的"Get the name of the next property of Result...
总结来说,JavaScript构造函数是用于初始化对象的一种特殊函数。理解构造函数、原型链以及this关键字在构造函数中的行为对于掌握JavaScript编程至关重要。通过构造函数与原型对象之间的相互作用,开发者能够创建复杂...
在 JavaScript 中创建对象主要有几种方式:使用 `new Object()` 构造函数、对象字面量以及自定义构造函数。下面将详细介绍这些方法。 1. **使用 `new Object()` 构造函数** ```javascript var book = new Object...
- 我们可以在构造函数的 `prototype` 上定义方法或属性,这些方法或属性会被所有通过该构造函数创建的对象共享。 #### 三、示例代码解析 根据提供的代码示例: ```javascript function Person(name) { // 基类...