JavaScript 面向对象的 私有成员和公开成员_js面向对象

其实很简单,废话少说,看了下面的代码及注释相信你就会一目了然!

复制代码 代码如下:

//声明类,就是一个方法,其实在JavaScript中,命名空间、类、成员.... 一切皆对象
MyClass =function(){
var _this=this;
//私有变量
var aa="11";
//公开变量
this.bb="22";
//私有方法
function fun1(){
alert(aa);
alert(_this.bb);
}
//私有方法
var fun2=function(){
alert(aa);
alert(_this.bb);
}
//公开方法
this.fun3=function(){
alert(aa);
alert(_this.bb);
}
}
//测试如下:
var mc=new MyClass();
mc.aa="AA";//错误
mc.bb="BB";//正确
mc.fun1();//错误
mc.fun2();//错误
mc.fun3();//正确

一言以蔽之:在类的内部
用 var 关键字声明的变量或方法是私有的;
用function 关键字声明的方法是私有的;
用this关键字声明的变量或方法是公开的。

以上说的都是针对于实例类而言的,而对于静态类那就更简单了,JavaScript静态类其实就是一个json对象,所以的它的所有成员都是公开的,都是对外可见的!

作者: 祥叔
出处:http://xumingxiang.cnblogs.com/

时间: 2024-11-09 05:05:09

JavaScript 面向对象的 私有成员和公开成员_js面向对象的相关文章

JavaScript 面向对象的之私有成员和公开成员_js面向对象

上两节讲了 JavaScript 面向对象之命名空间 与 javascript 面向对象的JavaScript类,大家可以先看上面的再继续往下看. 其实很简单,废话少说,看了下面的代码及注释相信你就会一目了然! 复制代码 代码如下: //声明类,就是一个方法,其实在JavaScript中,命名空间.类.成员.... 一切皆对象 MyClass =function(){ var _this=this; //私有变量 var aa="11"; //公开变量 this.bb="22

JavaScript 面向对象编程(2) 定义类_js面向对象

本文承接上一篇JavaScript面向对象编程(1) 基础. 上篇说过,JavaScript没有类的概念,需要通过函数来实现类的定义.先通过一个例子说明: 复制代码 代码如下: function myClass() { var id = 1; var name = "johnson"; //properties this.ID = id; this.Name = name; //method this.showMessage = function() { alert("ID:

Javascript 面向对象(一)(共有方法,私有方法,特权方法)_js面向对象

私有方法:私有方法本身是可以访问类内部的所有属性的,即私有属性和公有属性.但是私有方法是不可以在类的外部被调用. 私有方法写法: 复制代码 代码如下: function myClass () { var private_attribute = initial_value; function private_method () { } var private_method2 = function () { } } 实例showpet()就是一个私有方法 复制代码 代码如下: var pet=fun

javascript 面向对象全新理练之原型继承_js面向对象

首先创建一个父类的实例化对象,然后将该对象赋给子类的 prototype 属性. 这样,父类中的所有公有实例成员都会被子类继承.并且用 instanceof 运算符判断时,子类的实例化对象既属于子类,也属于父类. 然后将子类本身赋值给它的 prototype 的 constructor 属性.(注意:这里赋值的时候是没有 () 的!) 这一步是为了保证在查看子类的实例化对象的 constructor 属性时,看到的是子类的定义,而不是其父类的定义. 接下来,通过对 o.method1() 调用的

JavaScript之信息的封装 js对象入门_js面向对象

JavaScript之信息的封装 在编码前,我们需要了解如下几个术语:封装:对内部数据的表现形式和实施细节进行隐藏: 私有属性和方法:外界只能通过其公开的接口与其进行存取和交互 作用域:JavaScript中,只有函数具有作用域,函数内部定义的属性和方法在外部无法访问 特权方法:声明在函数内部,能访问函数内部变量(属性)的方法,比较耗费内存: 复制代码 代码如下: function Person() { /* * 声明私有的数据 * 昵称,年龄,邮箱 */ var nickName, age,

javascript 面向对象,实现namespace,class,继承,重载_js面向对象

由于组里项目大多的javascript,css等客户端工作是另一同事在负责,该同事又特忙无法重构,老大也就只是提建议并未立即实施重构.但是我前些日子也改过些许客户端的小bug,确实那代码看得让人有些云里雾里,不知身在哪山,轻易不敢动代码,于是就自己动手鼓捣起我曾又爱又恨的javascript来,自己写一个简单的js实现namespace,继承,重载等面向对象的特性.欢迎拍砖灌水 .定义namespace Namesapce.js 复制代码 代码如下: Namespace = new Object

JavaScript面向对象(极简主义法minimalist approach)_js面向对象

极简主义法 荷兰程序员 Gabor de Mooij 提出了一种比 Object.create ()更好的新方法,他称这种方法为"极简主义法"(minimalist approach).这也是我推荐的方法. 3. 1 封装 这种方法不使用 this 和 prototype,代码部署起来非常简单,这大概也是它被叫做"极简主义法"的原因. 首先,它也是用一个对象模拟"类".在这个类里面,定义一个构造函数 createNew (),用来生成实例. 复制

AppBaseJs 类库 网上常用的javascript函数及其他js类库写的_js面向对象

复制代码 代码如下: /*----------------------------------- Web Application JavaScript Library 2009.11 janchie ------------------------------------*/ //String原生对象扩展 置空左右端空格 String.prototype.trim = function(){ return this.replace(/(^[\s\n\t\r]*)|([\s\n\r\t]*$)/g

javascript中的对象创建 实例附注释_js面向对象

javascript中的对象创建声明: var obj = {}; 或者 var obj = new Object(); 为对象加入属性,方法: //=====第一种写法==================================== obj.name = '小明'; //为对象加属性 obj.updateName = function(name){//为对象定义updateName方法 this.name = name; } alert(obj.name); obj.updateNam