今天碰到了个问题,如下
function s(){};
s.prototype={
_cols:[],
drawTitle:function(titles){
for(var j=0;j<titles.length;j++){
this._cols[j]=titles[j];
}
}
}
var a=new s();
alert(s.prototype._cols.length)
a.drawTitle([1,2,3]);
alert(s.prototype._cols.length)
原型的数组类型的属性被改变了!
原型的属性是不变的,而且所有实例共享。当new一个实例a出来,访问实例的a._cols属性,可是它并不存在,所以顺着原型链向上找,找到了s.prototype._cols。这个时候就体现了原型属性的共享。当你给a._cols赋值时,因为a._cols并不存在,所以就创建了一个a._cols属性并给它赋值,你以后再访问a._cols时,就是访问的实例a的_cols属性,此时就体现了原型属性的不变。
赋值的时候,是给a._cols[j]赋值,而不是a._cols。
所以如果要完成这次赋值,按道理是分两步的:
首先创建一个a._cols = [];
然后是添加一个成员并赋值 a._cols[j] = xxxx;
可是电脑没那么聪明,因此就直接找到己有的能够访问的s.prototype._cols并给它添加了一个成员并赋值;
分享到:
相关推荐
然而,随着对这一概念的深入了解,你会发现基于原型的继承模型不仅非常强大,而且还具备很多传统面向类编程所不具备的优势。 #### 原型的概念 在JavaScript中,每个函数都有一个`prototype`属性,该属性指向一个...
因此,每个函数和对象都有原型属性,但普通对象不具有prototype属性,它们具有一个特殊的属性叫做__proto__,指向其原型。 2. 什么事原型链? 原型链是一条由对象的原型所构成的链式结构。每个对象都有一个指向其...
在原型模式中,一个对象(原型)可以克隆自己,生成与原对象具有相同属性和状态的新对象。这种模式通常用于系统需要频繁创建相似对象的场景,如游戏中的角色生成、文档模板等。 在C++中,实现原型模式通常涉及到...
四色原型是面向对象设计中的一个概念,源自90年代,由Peter Coad和Mark Mayfield提出,并由David North进一步发展。这一方法主要用于系统分析,特别是在软件开发的领域建模阶段,以提升理解和抽象业务需求的效率。...
在JavaScript中,原型(Prototype)和原型链(Prototype Chain)是理解对象继承和属性查找机制的关键概念。这里,我们深入探讨这两个概念,并结合代码练习来加深理解。 首先,原型是JavaScript中每个对象都有的一种...
1. **线框图与注释**:Axure RP 支持绘制线框图并添加详细的注释说明,帮助团队成员更好地理解设计意图。 2. **固定图片的边角**:通过调整图像边角,使界面更加美观和人性化。 3. **绘图功能的增强**:Axure 5.5 ...
【设计模式之原型模式】 设计模式是软件工程中的一种最佳实践,是...同时,原型管理器可以进一步提高系统的灵活性,减少客户角色与原型对象的直接交互。理解并熟练应用原型模式,有助于提升软件设计的效率和可维护性。
5. 寄生式继承:寄生式继承是对原型式继承的进一步封装,创建一个仅用于封装继承过程的函数,该函数内部以某种方式来增强对象,最后返回对象。这种方法可以增强对象,但同样不支持共享。 6. 寄生组合式继承:这是...
### 四色原型图进行业务建模的思考 #### 一、四色原型图概述 四色原型图是一种系统分析方法,它起源于90年代,由Peter Coad和Mark ...通过对这四个基本原型的深入理解与应用,可以显著提升软件开发项目的成功率。
在JavaScript编程语言中,原型(Prototype)、作用域(Scope)和闭包(Closure)是三个核心概念,对于理解和编写高效、可维护的代码至关重要。本文将深入探讨这三个概念,并通过实例解析它们的工作原理。 首先,...
通过深入理解和研究这个图,开发者可以更好地优化代码,提高性能,并且能够创建自定义的插件和扩展,进一步增强jQuery的功能。在实际工作中,理解JavaScript的原型机制和jQuery的内部工作原理对于编写高效、可靠的...
2. **使用变量**:Axure RP允许用户定义全局变量或局部变量,并在条件判断中引用它们,进一步增强原型的功能性和灵活性。 ##### (三)HTML导出 完成原型设计后,可以将整个项目导出为HTML格式,便于在浏览器中查看...
3. **图属互查**:图属互查(Attribute Query and Map Feature Selection)是GIS中的关键功能,允许用户通过地图上的特征选择相应的属性信息,或通过属性查询找到地图上的特定特征。ArcEngine提供了IQueryFilter接口...
- 反馈与优化:学习如何根据用户反馈和测试结果,对原型进行迭代和优化。 8. **协作与分享** - 版本控制:理解如何使用Axure的版本控制功能,避免团队成员之间的冲突。 - 文件共享:了解如何将原型文件导出为...
此外,文档还提到了原型属性可以分步设置。这种方式允许开发者在不一次性设置整个原型对象的情况下,逐个添加属性和方法,从而使代码更具有模块化和可维护性。 文档还引入了一个“BaseCalculator”对象作为例子,来...
3. 扩展方法:生成器可以进一步生成针对这些属性的扩展方法,如数据转换、格式化输出等。 4. ORM集成:与ORM框架(如NHibernate、Entity Framework等)无缝对接,自动创建符合ORM规则的实体类。 综上所述,.NET...
在学习和实践的过程中,读者可以参考相关书籍、网络教程和开发社区,以进一步理解JavaScript的原型链、原型继承和构造函数等概念。对于有编程基础的读者,理解这一机制将有助于提升编程能力,写出更加高效、可维护的...
### Axure快速原型设计知识点概览 #### 一、为什么选择Axure进行原型设计? - **Axure的优势**:Axure RP 是一款专...通过实际案例的学习和练习,将进一步加深对Axure的理解和运用,帮助设计师们更加高效地完成工作。
这些资源通常会深入讲解JavaScript的核心概念,包括原型链、闭包、异步编程等高级主题,对提升JavaScript编程技巧有很大帮助。 总的来说,理解和熟练运用HTML元素属性以及JavaScript是Web开发中的基础技能。通过...
在原型模式中,所有的实例都共享原型中的数据,当对原型对象进行修改时,所有实例的相应属性也会发生变化。 混合模式结合了构造函数模式和原型模式的优点。在这个模式中,构造函数用于定义实例属性,而原型对象用于...