JavaScript中的公有成员,私有成员和静态成员
私有成员就是在类的内部实现中可以共享的成员。但是并不对外公开,JavaScript中并没有特殊的机制来定义私有成员,但是可以用一些技巧来实现这个功能。主要是通过变量的作用域性质来实现的,在一个函数内部定义的变量称为局部变量,该变量不能被函数外的程序所访问,可以被函数内部定义的嵌套函数所访问。
在类的构造函数中可以为类添加成员,通过这种方式定义的成员,实际上共享了在构造函数内部定义的局部变量,这些变量就可以看作是类的私有成员。如:
实现私有成员
<script>
function class1(){
var pp="this is a private property";//私有属性成员pp
function pm(){//私有方法成员pm,显示pp的值
alert(pp);
}
this.method1=function(){//在公有成员中改变私有属性的值
pp="pp has been changed";
}
this.method2=function(){//在公有成员中调用私有方法
pm();
}
}
var obj1 = new class1();
obj1.method1();
obj1.method2();
</script>
注意:
局部变量(私有成员)被所有在构造函数中定义的公有方法所共享,而且仅被在构造函数中定义的公有方法所共享,这意味着,在prototype中定义的类成员不能访问在构造器中定义的局部变量。
实现静态成员:
和私有成员勉强相比,静态成员就要正统的多了,静态成语就是属于一个类的成员,如:
function class1(){
}
class1.staticProperty="sample";
class1.staticMethod=function(){
alert(class1.staticProerty);
}
class1.staticMethod();
如果要给每个函数对象都添加通用的静态方法,还可以函数对象所对应的类Function来实现:
Function.prototype.showArgsCount=function(){
alert(this.length);
}
function class1(a){
}
class1.showArgsCount();
由此可见,通过Function的prototype原型对象,可以给任何函数都加上通用的静态成员。
相关文档:
要成为高级 JavaScript 程序员,就必须理解闭包。
本文结合 ECMA 262 规范详解了闭包的内部工作机制,让 JavaScript 编程人员对闭包的理解从“嵌套的函数”深入到“标识符解析、执行环境和作用域链”等等 JavaScript 对象背后的运行机制当中,真正领会到闭包的实质。
原文链接:JavaScript C ......
尽管 JavaScript 历史上使用冗长而令人生厌的代码块来标的特定浏览器的时期已经结束了,但是偶尔使用一些简单的代码块和对象检测来确保一些代码在用户机器上正常工作依然是必要的。
这篇文章中,我会略述一下 Internet Explorer 和 Firefox 在 JavaScript 语法上不同的 7 个方面。
1. CSS “float” 属性
获取 ......
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>javas
cript 操作日期 测试</title>
<meta http-equiv= ......
今天在调试JavaScript程序,突然发现忘了单引号和双引号的区别是什么了,于是乎上网搜索之,加上自己的调试,最终发现原来是书上写的出错了。NND个熊,让我对这书失望极了。废话不说,直奔主题。
JavaScript不区分单个字符和字符串,任何字符或字符串可以用双引号或单引号引起来。如果字符串本身含有双 ......
原文:刘武
| Javascript操作下拉框的常用方法
项目中碰到需要用javascript操作下拉框的情况,顺便做一下总结,列出一些常用方法,以下方法均在FIRFOX3.5及IE8上测试过,如有其他浏览器无法正常运行的请与笔者联系。
//添加一个下拉框
function AddDropDownList(id,fatherCtl)
{
if(!document.getElementById(id) ......