Javascript面象对象成员、共享成员变量实验


Posted in Javascript onNovember 19, 2010

1)Javascript对象成员实验:

var f = function d() { 
this.a = "a";/*这句运行后不存在f.a也不存在d.a存在一个window.a*/ 
var b = "b";/*局部变量*/ 
}; 
var o = { ff: function () { 
var a = "a"; /*局部变量*/ 
this.b = "b"; /*这句运行后存在o.b*/ 
} 
}; 
function Man(){ 
this.age = 30; 
}; 
Man.prototype.sex = 1; 
Man.prototype.name = function () { 
}; 
debugger;/*第一处断点*/ 
f(); 
o.ff(); 
var m = new Man(); 
debugger; /*第二处断点*/

第一处断点时对象成员的存在情况:

Javascript面象对象成员、共享成员变量实验

第二处断点时对象成员的存在情况:

Javascript面象对象成员、共享成员变量实验

一句话:关于js函数:this指的是所在函数外最近一层的对象,而嵌套函数的内部函数内的this指的是window对象。

一句话:js的oo特性:使用this.成员方式定义对象的成员使用对象具有js特有的动态持性,类与对象实例有差异的,而.prototype.成员定义成员是经典的定义方式,类与对象实例是统一的。
2)Javascript对象共享性成员变量实验:

function Ghost(_name) { 
this.name = _name; 
this.age = 1000; 
} 
Ghost.prototype.setName = function (_name) { 
this.name = _name; 
} 
function Man(_name){ 
this.age = 30; 
this.ghost = new Ghost("实例变量" + _name); 
}; 
Man.prototype.ManGhost = new Ghost("共享变量"); 
var a = new Man("a"); 
var b = new Man("b"); 
var amg = a.ManGhost.setName("我只设置a的共享变量"); 
debugger; /*第一处断点*/ 
var ag = a.ghost; 
var bg = b.ghost; 
var bmg = b.ManGhost; 
debugger; /*第二处断点*/

运行到第一片断点:

Javascript面象对象成员、共享成员变量实验

简单变量与对象变量的差别

使用.prototype.定义的成员,如果该成员为简单变量则,每个对象实例都有一个各自的副本。(例如:Man.prototype.noObejctVar)

使用.prototype.定义的成员,如果该成员对象变量,则每个对象实例都共享同一个对象副本。(例如:Man.prototype.ManGhost)

为什么有这样的差别呢?单从ManGhost变量与noObjectVar变量它们都是使用.prototype.定义的成员是没有差别的,只是它们类型不同,表示它们访问和使用用它们的方式是不同的,只是ManGhost变量内存放的是new出来的对象,而noObjectVar变量内存放的是值(或某种值的引用),换句话说ManGhost存放的是对象的引用,通过这个引用可以操作这个对象,noObjectVar变量内存放也可是某种值引用,可是无法使用这个引用来操作它.

从另一个视角看

noObjectVar变量存放的是字串对象的引用.

a.noObjectVar="新字符串a";

这表示noObjectVar从原来的存放字符串对象引用,指向新字符串对象引用.(也可以说新的字符串对象覆盖原字符串对象)

a.ManGhost=new Ghost("a");

b.ManGhost=new Ghost("b");

这样a与b就不存在共享对象的问题了.不过这样就存在另一个问题.prototype.ManGhost时定义新建的对象就浪费了.不过这样使用.prototype.是错误的.

使用.prototype.定义成员函数及定义共享变量才是正确的用法.

使用javascript来正确的定义类请见:[技术备忘录]javascript来定义类的规范

Javascript 相关文章推荐
javascript之函数直接量(function(){})()
Jun 29 Javascript
清除网页历史记录,屏蔽后退按钮!
Dec 22 Javascript
js控制div及网页相关属性的代码
Dec 19 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
Feb 23 Javascript
简易js代码实现计算器操作
Apr 15 Javascript
js实现字符串的16进制编码不加密
Apr 25 Javascript
在JS数组特定索引处指定位置插入元素
Jul 27 Javascript
js和jquery设置disabled属性为true使按钮失效
Aug 07 Javascript
jQuery实现的导航动画效果(附demo源码)
Apr 01 Javascript
VueJs组件prop验证简单介绍
Sep 12 Javascript
Vuex中mutations与actions的区别详解
Mar 01 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
Dec 21 Javascript
js 创建快捷方式的代码(fso)
Nov 19 #Javascript
javascript 函数参数限制说明
Nov 19 #Javascript
Javascript的并行运算实现代码
Nov 19 #Javascript
js里的prototype使用示例
Nov 19 #Javascript
Google 静态地图API实现代码
Nov 19 #Javascript
javascript 窗口加载蒙板 内嵌网页内容
Nov 19 #Javascript
JS运行耗时操作的延时显示方法
Nov 19 #Javascript
You might like
计算php页面运行时间的函数介绍
2013/07/01 PHP
php session的应用详细介绍
2017/03/22 PHP
使用正则替换变量
2007/05/05 Javascript
Javascript 读书笔记索引贴
2010/01/11 Javascript
运算符&&的三个不同层次
2013/04/07 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
jquery调取json数据实现省市级联的方法
2015/01/29 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
js控制台输出的方法(详解)
2016/11/26 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
BootStrap实现鼠标悬停下拉列表功能
2017/02/17 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
JavaScript实现秒杀时钟倒计时
2019/09/29 Javascript
详解Vue3 Composition API中的提取和重用逻辑
2020/04/29 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
[02:43]2018DOTA2亚洲邀请赛主赛事首日TOP5
2018/04/04 DOTA
python基础教程之python消息摘要算法使用示例
2014/02/10 Python
Python中的变量和作用域详解
2016/07/13 Python
不要用强制方法杀掉python线程
2017/02/26 Python
Python3实现对列表按元组指定列进行排序的方法分析
2018/12/22 Python
Python字符串的修改方法实例
2019/12/19 Python
python 合并多个excel中同名的sheet
2021/01/22 Python
戴尔英国翻新电脑和电子产品:Dell UK Refurbished Computers
2019/07/30 全球购物
北京天润融通.net面试题笔试题
2012/02/20 面试题
大学生找工作求职信
2014/07/09 职场文书
课内比教学心得体会
2014/09/09 职场文书
简单的个人租房协议书范本
2014/11/26 职场文书
个人年终总结怎么写
2015/03/09 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
党员承诺书范文2015
2015/04/27 职场文书
2015年酒店工作总结
2015/04/28 职场文书
跑出一片天观后感
2015/06/08 职场文书
出生证明范本
2015/06/15 职场文书
有关浪费资源的建议书
2015/09/14 职场文书