js对象私有变量公有变量问题
-
js对象私有变量公有变量问题5
小弟初学JS面向对象编程 现有一问题 请教各位大虾:
Person=function (){
//私有变量定义
var name;
vae age;
var Alert=function (){ alert(name+age);};return {
printName:function(){ alert(this.Alert());},
printAge:function(){alert(thia.age);}
}
}外部调用 Person person1=new Person();
person1.name="张三";
person1.age=20;
person1.printAge();//成功没有错误
person1.printName();//报错请各位指点为什么在公有方法里 用this调私有变量都可以 调私有方法都出错?
问题补充:langshao 写道- function WhoAmI() //定义一个函数WhoAmI
- {
- alert("I'm " + this.name + " of " + typeof(this));
- };
- WhoAmI(); //此时是this 当前这段代码的全局对象,在浏览器中就是window 对象,其name 属性为空字符串。
- 输出:I'm of object
- var BillGates = {name: "Bill Gates"};
- BillGates.WhoAmI = WhoAmI; //将函数WhoAmI 作为BillGates 的方法。
- BillGates.WhoAmI(); //此时的this 是BillGates。输出:I'm Bill Gates of object
- var SteveJobs = {name: "Steve Jobs"};
- SteveJobs.WhoAmI = WhoAmI; //将函数WhoAmI 作为SteveJobs 的方法。
- SteveJobs.WhoAmI(); //此时的this 是SteveJobs。输出:I'm Steve Jobs of object
- WhoAmI.call(BillGates); //直接将BillGates 作为this,调用WhoAmI。输出:I'm Bill Gates of object
- WhoAmI.call(SteveJobs); //直接将SteveJobs 作为this,调用WhoAmI。输出:I'm Steve Jobs of object
- 8
- BillGates.WhoAmI.call(SteveJobs); //将SteveJobs 作为this,却调用BillGates 的WhoAmI 方法。输出:
- I'm Steve Jobs of object
- SteveJobs.WhoAmI.call(BillGates); //将BillGates 作为this,却调用SteveJobs 的WhoAmI 方法。输出:
- I'm Bill Gates of object
- WhoAmI.WhoAmI = WhoAmI; //将WhoAmI 函数设置为自身的方法。
- WhoAmI.name = "WhoAmI";
- WhoAmI.WhoAmI(); //此时的this 是WhoAmI 函数自己。输出:I'm WhoAmI of function
- ({name: "nobody", WhoAmI: WhoAmI}).WhoAmI(); //临时创建一个匿名对象并设置属性后调用WhoAmI
- 方法。输出:I'm nobody of object
谢谢你 答复的很详细 太感谢了。。。你有QQ吗可以加一下吗 以后向你请教
2010年2月06日 23:12
2个答案
按时间排序
按投票排序
0
-
采纳的答案
- function WhoAmI() //定义一个函数WhoAmI
- {
- alert("I'm " + this.name + " of " + typeof(this));
- };
- WhoAmI(); //此时是this 当前这段代码的全局对象,在浏览器中就是window 对象,其name 属性为空字符串。
- 输出:I'm of object
- var BillGates = {name: "Bill Gates"};
- BillGates.WhoAmI = WhoAmI; //将函数WhoAmI 作为BillGates 的方法。
- BillGates.WhoAmI(); //此时的this 是BillGates。输出:I'm Bill Gates of object
- var SteveJobs = {name: "Steve Jobs"};
- SteveJobs.WhoAmI = WhoAmI; //将函数WhoAmI 作为SteveJobs 的方法。
- SteveJobs.WhoAmI(); //此时的this 是SteveJobs。输出:I'm Steve Jobs of object
- WhoAmI.call(BillGates); //直接将BillGates 作为this,调用WhoAmI。输出:I'm Bill Gates of object
- WhoAmI.call(SteveJobs); //直接将SteveJobs 作为this,调用WhoAmI。输出:I'm Steve Jobs of object
- 8
- BillGates.WhoAmI.call(SteveJobs); //将SteveJobs 作为this,却调用BillGates 的WhoAmI 方法。输出:
- I'm Steve Jobs of object
- SteveJobs.WhoAmI.call(BillGates); //将BillGates 作为this,却调用SteveJobs 的WhoAmI 方法。输出:
- I'm Bill Gates of object
- WhoAmI.WhoAmI = WhoAmI; //将WhoAmI 函数设置为自身的方法。
- WhoAmI.name = "WhoAmI";
- WhoAmI.WhoAmI(); //此时的this 是WhoAmI 函数自己。输出:I'm WhoAmI of function
- ({name: "nobody", WhoAmI: WhoAmI}).WhoAmI(); //临时创建一个匿名对象并设置属性后调用WhoAmI
- 方法。输出:I'm nobody of object
2010年2月07日 10:22
0
-
- Person = function() {
- return {
- printName: function() { this.Alert.call(this); },
- printAge: function() { alert(this.age); }
- }
- }
- function process() {
- //外部调用
- person1 = new Person();
- person1.name="张三";
- person1.age=20;
- person1.Alert = function() { alert(this.name + this.age); };
- person1.printAge();
- person1.printName();
- }
js对象私有变量公有变量问题的更多相关文章
- js——private 私有方法公有化
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 007-Scala类的属性和对象私有字段实战详解
007-Scala类的属性和对象私有字段实战详解 Scala类的使用实战 变量里的类必须赋初值 def函数时如果没参数可不带括号 2.不需要加Public声明 getter与setter实战 gett ...
- JS中的 公有变量、私有变量 !
公有变量.私有变量 ! 初学者的见解,算是记录学习过程,也算是分享以便共同成长,如有不正确的地方,还请不吝赐教! 先看代码1: function car(){ var wheel = 3; //私有变 ...
- 理解js中私有变量
私有变量在js中是个什么概念.当下我的认识是var所定义的变量,实际可以理解为属性和方法,或者单单是临时存储器,不归属任何对象. 一个声明函数: function a(){ var v = &quo ...
- js静态私有变量(将方法变成原型模式,被所有实例共享,而方法操作变量,故变量是静态)
js静态私有变量(将方法变成原型模式,被所有实例共享,而方法操作变量,故变量是静态) 一.总结 1.js函数中的private和public:js函数中的私有变量 var 变量名,公有变量 this. ...
- Vue之挂载点、变量、事件、js对象、文本指令、过滤器、事件指令和属性指令
1.vue导入-挂载点 <!DOCTYPE html> <html lang="zh"> <head> <meta charset=&qu ...
- js的命名空间 && 单体模式 && 变量深拷贝和浅拷贝 && 页面弹窗设计
说在前面:这是我近期开发或者看书遇到的一些点,觉得还是蛮重要的. 一.为你的 JavaScript 对象提供命名空间 <!DOCTYPE html> <html> <he ...
- js 作用域链&内存回收&变量&闭包
闭包主要涉及到js的几个其他的特性:作用域链,垃圾(内存)回收机制,函数嵌套,等等 一.作用域链:函数在定义的时候创建的,用于寻找使用到的变量的值的一个索引,而他内部的规则是,把函数自身的本地变量放在 ...
- 福利->KVC+Runtime获取类/对象的属性/成员变量/方法/协议并实现字典转模型
我们知道,KVC+Runtime可以做非常多的事情.有了这个,我们可以实现很多的效果. 这里来个福利,利用KVC+Runtime获取类/对象的所有成员变量.属性.方法及协议: 并利用它来实现字典转模型 ...
随机推荐
- linux下配置ssledge代理服务器
ssl edge 是一个非常好用的VPN/proxy, 比云梯 稳定快速的多. 在LINUX下开发 Titanium 需要用到各种FQ,所以它是必备工具. 1. 根据自己付费后的用户名和密码,下载 ...
- Websocket Component
As of Camel 2.10, the Websocket component supports SSL/TLS configuration through the Camel JSSE Conf ...
- springmvc No mapping found for HTTP request with URI in Dispatc
springmvc No mapping found for HTTP request with URI in Dispatc 博客分类: Java Web springmvcspring MVCNo ...
- 笔记:java转XML
package com.deppon.oms.module.client.pushToTianFangkeji.domain; import java.util.ArrayList; import j ...
- ajax 跨域请求时url参数添加callback=?会实现跨域问题
例如: 1.在 jQuery 中,可以通过使用JSONP 形式的回调函数来加载其他网域的JSON数据,如 "myurl?callback=?".jQuery 将自动替换 ? 为正确 ...
- 关于gridview里加按钮事件的总结
1. onrowcommand="GridView1_RowCommand1" 在gridview申明时的属性里要有,然后找到闪电,双击 还有要把那个按钮行模板化,就是箭头里面的t ...
- Icident event 分析
现象 备库中断,显示如下错误 Connect_Retry: 60 Master_Log_File: mysql-bin.000185 Read_Master_Log_Pos: 308647804 Re ...
- PCWIFI--无线网络共享软件
前段时间由于需要共享笔记本无线网络给手机使用,在网上找了几个软件试了一下,没找到比较好用的,要么是收费的,要么有广告,要么附带一大堆其他功能,所以决定自己写一个小软件来实现该功能.软件相关介绍如下: ...
- Java多线程3:Thread中的静态方法
Thread类中的静态方法 Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程".为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程 ...
- Linux grep命令和正则表达式
介绍 grep是一个功能强大的文本搜索命令,可以用它来搜索某个文件中是否包含指定的搜索内容,它可以利用正则表达式来做复杂的筛选操作,它还可以为其它命令传输给管道的筛选,比如我们常用到的分析单个进程的操 ...
添加评论
关注(0)