易截截图软件、单文件、免安装、纯绿色、仅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中的 escape,encodeURI,encodeURIComponent


js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent
1、   传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。               ......

关于javascript模块加载的思索

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

HTML+Javascript+XML


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

<NAME>TOM</NAME>
<SEX>M</SEX>
以上内容的< ......

利用http的referer头和Servlet隐藏JavaScript代码

1.       定义一个用于输出JavaScript代码 的Servlet类。
package com.mycompany.response.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServle ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号