易截截图软件、单文件、免安装、纯绿色、仅160KB

一家之言:说说 JavaScript 的类成员的访问控制

看书的时候遇到这样一个问题,程序代码如下
var ob = function(){
var obj = this;
function fn1(){
alert( obj === window );//false
alert( this === window );//ture
}
this.fn2 = function() {
fn1();
}

当时很不明白fn1里面第二个alert的结果,为什么this会指向window?
我在群里讨论这个问题,引发一场关于js私有函数的讨论,今天我就说说js的类成员访问控制,郑重声明这只是我的个人观点,仅供讨论。
所谓js的类成员访问机制就是常说的公共成员、私有成员、保护成员。
1 公共成员public member
js实现公共方法是通过prototype属性,prototype是每个对象都具有的一个特别的成员,它定义了对象的内部结构,很类似其他面向对象语言(比如C++)的传统的类(Class),如果你对面向对象不了解,就把它理解为一个对象的蓝图,一旦它被修改,那么所有这个对象的实例和继承这个对象的实例都会发生改变(有点拗口)。
举个例子
// 创建一个构造方法
function myConstructor(message) {
alert(message);
this.myMessage = message;
}
// 添加一个公共方法
myConstructor.prototype.clearMessage = function(string) {
this.myMessage += ' ' + string;
}
//实例一个对象,通过实例调用对象的公共方法
var myObject = new myConstructor('Hello World!');
myObject.clearMessage(); 
但是我们不能直接用myConstructor.clearMessage(),因为myConstructor本身是Function对象的实例,而Function本身是没有clearMessage()这个方法的。
关于prototype我想多说一点,关于prototype链,因为每个对象都有一个prototype属性,而prototype本身也是一个对象,所以它也可以包含自己prototype,这样就形成了一个链条,直到链条的最末端就是prototype为null
举个例子
// 第一个构造方法
lor: #0000ff;">function MyObject1(formalParameter){
//保护成员(后面会讨论,这里可以理解为公共方法)
this.testNumber = formalParameter;
}
//第二个构造方法
function MyObject2(formalParameter){
//保护成员
this.testString = formalParameter;
}
//把第一个对象的实例赋给第二个对象的prototype属性
MyObject2.prototype = new MyObject1( 8 );
//最后,实例化第二个对象
var objectRef = new MyObject2( "String_Value" );
/


相关文档:

javascript cookies 存、取、删除实例

<script>
//写cookies函数 作者:翟振凯
function SetCookie(name,value)//两个参数,一个是cookie的名子,一个是值
{
    var Days = 30; //此 cookie 将被保存 30 天
    var exp  = new Date();    //new Date("December 31, 9998");
    ......

javascript获取服务端控件值的两种办法

第一种:
+展开
-HTML
<html> 
<head> 
</head> 
<body> 
<form name="form1"> 
<input type="text" name="getinfo" value="http://www.shuwo.net" size="40"><button onclick="alert(document.form1.getinfo.value ......

JavaScript 判断上传文件类型

function
 Check_FileType(str)
{
 
var
 pos 
=
 str.lastIndexOf(
"
.
"
);
 
var
 lastname 
=
 str.substring(pos,str.length)  //此处文件后缀名也可用数组方式获得str.split(".")
 
if
 (lastname.toLowe ......

关于javascript模块加载的思索

最近一直为此头痛,姑且把我能想到的东西都写出来吧。由于不是简单把页面上手写的script转为javascript添加,我们需要考虑的东西主要有两个:加载的顺序,加载前后脚本的运作。
先说第一个,假如我们已有一加载机制了,要加载一个新模块,当然新模块是在另一个JS文件中。这时,我们可以描述为:
loader ---> a.js
这个加 ......

HTML+Javascript+XML


上面所说有关HTML的内容非常少又简单,但对已经了解的人来说就是没用的.
如有问题可到权威网 http://www.html.com/ 上查看
以下开始说说关于XML的一些知识.
XML也是标记语言,可它是自定义的,没有已给定格式.不具体说它,给出例子就可明了.

<NAME>TOM</NAME>
<SEX>M</SEX>
以上内容的< ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号