Javascript 原型注意事项
function abc() {}
        abc.prototype.xx = {
            name: "keatkeat"
        }
        var x = new abc();
        x.xx.name = "5566";
        alert(abc.prototype.xx.name); //是 5566 ,你把原型的值给改掉了
要注意,原型是共享的,我们在实例对象可以调用到原型,也可以改变他。
function abc() {}
        abc.prototype.xx = "keatkeat"
        var x = new abc();
        x.xx = "5566";
        alert(abc.prototype.xx);//还是keatkeat
x.xx = "5566" 写入的时候如果实例本身没有这个属性,它会创建一个,而不是去改写原型的。
比较这2个例子
比较容易混乱的地方是什么时候它会创建一个属性,什么时候它会去写原型?
简单的想法可以这么看待, x.xx 表示我们想添加一个属性,x.xx.name = "5566" 正常的角度来看我们应该是写 x.xx ={}; x.xx.name = "5566" 要先有对象才能给属性啊!
所以x.xx.name = "5566"这种情况下它没办法直接创建一个新对象然后给予属性,游览器就聪明的去写原型了咯!
这个在用angularjs的人可能要多注意了。angularjs 的$scope是有继承关系的,也就是原型链啦。注意咯!
Javascript 原型注意事项的更多相关文章
- 浅谈系列之 javascript原型与对象
		
在我学习与使用javascript三个月中,我一直对javascript的继承关系以及prototype理解不清,导致很多时候为什么这么用说不出个所以然来.截止到本周为止,通过之前的学习以及自己的再学 ...
 - JavaScript原型OOP——你上车了吗?
		
.title-bar { width: 80%; height: 35px; padding-left: 35px; color: white; line-height: 35px; font-siz ...
 - 深入理解javascript原型和闭包 (转)
		
该教程绕开了javascript的一些基本的语法知识,直接讲解javascript中最难理解的两个部分,也是和其他主流面向对象语言区别最大的两个部分--原型和闭包,当然,肯定少不了原型链和作用域链.帮 ...
 - 深入理解javascript原型和闭包系列
		
从下面目录中可以看到,本系列有16篇文章,外加两篇后补的,一共18篇文章.写了半个月,从9月17号开始写的.每篇文章更新时,读者的反馈还是可以的,虽然不至于上头条,但是也算是中规中矩,有看的人,也有评 ...
 - 深入理解javascript原型和闭包(1)——一切都是对象
		
“一切都是对象”这句话的重点在于如何去理解“对象”这个概念. ——当然,也不是所有的都是对象,值类型就不是对象. 首先咱们还是先看看javascript中一个常用的函数——typeof().typeo ...
 - 深入理解javascript原型和闭包(2)——函数和对象的关系
		
上文(理解javascript原型和作用域系列(1)——一切都是对象)已经提到,函数就是对象的一种,因为通过instanceof函数可以判断. var fn = function () { }; co ...
 - 深入理解javascript原型和闭包(3)——prototype原型
		
既typeof之后的另一位老朋友! prototype也是我们的老朋友,即使不了解的人,也应该都听过它的大名.如果它还是您的新朋友,我估计您也是javascript的新朋友. 在咱们的第一节(深入理解 ...
 - 深入理解javascript原型和闭包(4)——隐式原型
		
注意:本文不是javascript基础教程,如果你没有接触过原型的基本知识,应该先去了解一下,推荐看<javascript高级程序设计(第三版)>第6章:面向对象的程序设计. 上节已经提到 ...
 - 深入理解javascript原型和闭包(5)——instanceof
		
又介绍一个老朋友——instanceof. 对于值类型,你可以通过typeof判断,string/number/boolean都很清楚,但是typeof在判断到引用类型的时候,返回值只有object/ ...
 
随机推荐
- YII增加全局函数
			
法1: 在使用Yii开发中我们经常会遇到一个问题,每次使用Yii的组件.扩展等,我们会像下面一样去写: <?php Yii::app()->user; Yii::app()->get ...
 - vbox端口转发
			
端口转发:setting->network->adapter:attached to NAT.port forwarding rules->name protocol ...
 - COJ 0260 HDNOIP201204四个国王
			
HDNOIP201204四个国王 难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 在N*M的棋盘上摆国际象棋中的“国王”.如果两 ...
 - 新博客——That
			
很久没写博客了,打算换个地方重新开始. 旧博客地址如下: http://blog.csdn.net/that163
 - Easyui获取数据库date数据的显示
			
众所周知Oracle数据库中的date与众不同,在Easyui中显示数据库的date类型如果不经过转化为显示为Object.因此需要经过处理. 1.首先你要写转化date的JavaScript < ...
 - Spring 基于注解零配置开发
			
本文是转载文章,感觉比较好,如有侵权,请联系本人,我将及时删除. 原文网址:< Spring 基于注解零配置开发 > 一:搜索Bean 再也不用在XML文件里写什么配置信息了. Sprin ...
 - 控制反转(IOC)/依赖注入(DI)理解
			
个人学习笔记,来自Acode. 1.术语 控制反转/反向控制,英文全称“Inversion of Control”,简称IoC. 依赖注入,英文全称“Dependency Injection”,简称D ...
 - phpstorm + xdebug 配置
			
PHPSTORM版本 : 8.0.1 PHP版本 : 5.6.2 把php-xdebug.dll复制到xamapp/php/ext目录下,打开php.ini配置如下参数 [xdebug] zend_e ...
 - (转)linux bash shell 入门教程
			
Shell Script(bash)简介 众所皆知地,UNIX上以小工具著名,利用许多简单的小工具,来完成原本需要大量软体开发的工作,这一点特色,使得UNIX成为许多人心目中理想的系统平台. 在众多的 ...
 - 【更新日志】售后CP更新日志
			
记录一下: [售后CP更新日志] ============================================ 更新时间:[-- :] 更新内容: .版本升级,框架升级,框架升级版本3. ...