今天闲来无聊,回顾知识点,记忆告诉自己,prototype 是能动态给js的对象添加属性和函数的。
写了一个小例子。居然没调通。我老郁闷啦。
eg:
function MyObject(t)
{
this.name = t;
}
MyObject.prototype.writeName = function()
{
return this.name;
}
var myobj1 = new MyObject("b");
alert(myobj1.writeName());
MyObject.prototype.name = "c";
alert(myobj1.writeName());
心想应该分别输出 “b” 和 “c”
结果两次输出都是“b”。仔细看着这简单的脚本似乎没有任何错误,看久了我想起一句话,prototype 是动态追加。 于是我在想,动态追加,是否应该该成这样呢。
function MyObject(t)
{
this.size = t;
}
MyObject.prototype.writeName = function()
{
return this.name;
}
MyObject.prototype.name = "b";
var myobj1 = new MyObject("b");
alert(myobj1.writeName());
MyObject.prototype.name = "c";
alert(myobj1.writeName());
这次修改后,输出的结果和自己想的是一致的,以至于不再否认人生了。。。(夸张了点
)
总结如下。
1.在类的基础或者说原生已有的情况下,prototype是不能覆盖的,他的功能是追加,扩展。(当然自然让我们想到继承,不错,这个思路是对的。)
2.如果同时动态增加的属性或者方法,prototype是能覆盖掉的。(我不能空口下结论,给个小脚本如下。)
function MyObject(t)
{
this.size = t;
}
MyObject.prototype.writeName = function()
{
return this.name;
}
MyObject.prototype.name = "b";
var myobj1 = new MyObject("b");
alert(myobj1.writeName());
MyObject.prototype.name = "c";
alert(myobj1.writeName());
MyObject.prototype.name = "d";
alert(myobj1.writeName());
分享到:
相关推荐
在JavaScript的世界里,Prototype是一个非常重要的概念,它用于对象继承和扩展。Prototype demo是一个示例,旨在演示如何使用和理解JavaScript中的原型机制。这个压缩包包含了一系列与Prototype相关的文件,如CSS...
MooTools提供了一种面向对象的编程风格,EXT3(EXT JS的第三个主要版本)则是一个强大的富客户端框架,专注于创建桌面级的Web应用,Prototype是早期流行的JavaScript库,为DOM操作提供了便利。 测试的细节没有在...
在JavaScript中,虽然传统意义上没有类的概念,但它支持基于原型(Prototype)的继承机制,也支持使用ES6引入的类语法来更好地支持面向对象编程。 面向对象编程具有几个核心概念,包括封装(Encapsulation)、继承...
"Prototype"是一个JavaScript库,它在Web开发领域中扮演着重要的角色,特别是在早期AJAX(异步JavaScript和XML)的繁荣时期。这个库由Sam Stephenson于2005年创建,旨在简化JavaScript编程,提供更强大的面向对象...
"prototype-tongwen-gjs:prototype-tongwen-gjs" 这个标题表明这是一个与JavaScript相关的项目,可能是一个JavaScript库或者框架,名字叫做"prototype-tongwen-gjs"。项目名称通常代表了其核心功能或用途,从名字看...
JavaScript是Web开发中不可或缺的一部分,它为网页添加了动态功能,让交互变得生动有趣。这篇博文"Javascript中55个经典技巧"汇总了一些JavaScript开发者应该掌握的核心技能和实用技巧,旨在提升代码质量和效率。...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在JavaScript开发中,JSON扮演着至关重要的角色,因为它是Web服务与客户端之间传递数据的主要方式。...
标题中的"前端项目-placeholder-shiv.zip"表明这是一个与前端开发相关的项目,具体是关于"placeholder-shiv"。在前端开发中,"placeholder"通常指的是HTML5中的一个特性,即输入框(input)的提示文本,当用户聚焦...
标题中的“len的博客->前端相关”提示我们这是一份与前端开发相关的资源,而“javascript-master”这个压缩包子文件的名称则表明这份资源主要聚焦于JavaScript编程语言。JavaScript是前端开发三大核心技术之一(另两...
`prototype-160-api.pdf` 关于Prototype JavaScript库,这是一个增强JavaScript功能的库,它简化了DOM操作,提供了类、继承和其他面向对象的特性。这个API文档会详细介绍如何使用Prototype来编写更高效的前端代码。 ...
JavaScript 是一种广泛使用的编程语言,尤其在前端开发领域占据了主导地位。对于初学者而言,理解 JavaScript 中的对象、数组等数据结构及其内部运作机制至关重要。本文将详细介绍 JavaScript 中引用类型的使用,...
综上所述,"JS-Adjacency-table-of-undirected-graph.zip"这个压缩包可能包含了一个JavaScript实现的无向图邻接表示例,以及相关的实验指导和测试用例,目的是帮助学习者理解和应用数据结构,特别是与图相关的操作。...
在JavaScript编程中,正确地检测一个对象的类型是很多场景下必须的步骤,特别是在需要处理多种数据类型时,确定数据类型可以帮助我们采取不同的处理策略,避免一些潜在的错误。传统的 typeof 操作符在检测基本数据...
JavaScript本身并不支持传统的面向对象继承,而是采用了基于原型(prototype)的继承机制。尽管这种机制很强大,但在某些场景下,如类型检查和多态性实现时,可能会显得不够直观。"class-is"库就是为了弥补这一不足...
【标题】"slate-for-chrome-v2-prototype" 是一个基于JavaScript的Chrome浏览器扩展项目的原型版本。这个项目可能旨在创建一个名为Slate的新功能或工具,专为Chrome浏览器定制,可能涉及到用户界面的增强、特定功能...
在JavaScript开发中,数据存储是不可或缺的一部分,尤其是在构建Web应用程序时。本地存储(Local Storage)和Session存储(Session Storage)是两种广泛使用的浏览器内置机制,它们允许开发者在用户浏览器上持久化...
在编程世界中,Promise 是一种处理异步操作的机制,特别是在JavaScript和其他现代编程语言中广泛使用。然而,这里我们关注的是将Promise的概念引入到 Delphi 编程环境中,标题 "promise-prototype-for-delphi" 暗示...
在JavaScript的世界里,原型继承是实现对象间属性和方法共享的一种机制,它是基于原型(Prototype)的概念来实现的。此项目“tooltip-js-with-inheritance-prototype”旨在展示如何利用原型继承设计模式创建一个简单...