`

Javascript静态变量与实例变量

 
阅读更多

     严格的来讲,js里面并没有静态与私有的概念,所有成员属性都是公开的,下面只是参考OO语言,通过某种方式来实现类似的概念。

一。静态变量

    1.私有静态变量

       所有实例共享。因为是私有的变量,所以不能通过函数名直接访问。通过闭包来实现。

       根据闭包的作用域原理,只能在闭包内部访问。所以,并不是类的任何地方都可以访问这个静态变量。只有类的构造函数或者方法(原型方法),在闭包内部才可以访问。

        

(function(){

        var privateStatic = "privatestatic";

        Func = function(){
            this.setPrivateStatic = function(value){
                privateStatic = value;
            }
            this.getPrivateStatic = function(){
                return privateStatic;
            }
        }
    })();

    var func1 = new Func();
    var func2 = new Func();
    console.log(func1.getPrivateStatic());// privatestatic
    console.log(func2.getPrivateStatic());// privatestatic

    console.log(func1.setPrivateStatic('changed')); 
    console.log(func2.getPrivateStatic()); //changed

    2.公共静态变量

       这个比较简单,直接对函数定义属性。

       Backbone的extend函数,有两个参数,第一个参数是实例变量,第二个参数是静态变量。期中静态变量的实现就是这种方式。

     

Func = function(){
        this.test = 'test';
    }
    Func.acfun= 'net';
    console.log(Func.acfun); //net

 

 

二。实例变量

1.私有实例变量

在构造函数里面,通过var定义的变量,都是私有实例变量,只有在构造的内部才能访问。 

     

var Person = function(value){
        var age =value;
        this.getAge = function(){
            return age;
        }
    }
    Person.prototype._getAge = function(){
        return age;
    }

    var yaoming = new Person('27');
    console.log(yaoming.age) //undefined
    console.log(yaoming.getAge()) //27
    console.log(yaoming._getAge()) // age is not defined,原型方法不能访问age,仅在构造函数内部可以访问私有实例变量

 

 

    2.公共实例变量

    在构造函数或原型方法中使用this定义的属性,以及原型中定义的属性.

    使用new 操作符对构造函数是实例化,会创建一个新的对象,并且将构造函数的作用域赋给新对象,并执     行代码,那么构造函数中如果有this定义属性或方法,则是对新对象添加属性或方法。

    

  var Person = function(name){
        this.name = name;
    }
    Person.prototype.age = '11';

    var yaoming = new Person('ym');
    console.log(yaoming.name);
    console.log(yaoming.age); //11

 

 

 

    

分享到:
评论

相关推荐

    JavaScript面向对象之私有静态变量实例分析

    本文实例分析了JavaScript面向对象之私有静态变量。分享给大家供大家参考,具体如下: 大家知道,私有实例变量的原理是根据作用域。 私有实例变量是在Javascript的function内部用var关键字实现,只在function内部...

    程序天下:JavaScript实例自学手册

    第12章 窗口特效与弹出式警告 12.1 无关闭按钮的窗口 12.2 鼠标控制窗口开关 12.3 使窗口只第一次访问时弹出 12.4 禁止弹出警告框 12.5 关闭窗口不提示的方法 12.6 关闭窗口时的提示 12.7 定时弹出窗口 12.8 调整...

    Javascript脚本实现静态网页加密实例代码

    阅读Javascript脚本实现静态网页加密,前两天看见有人问静态网页加密问题,就写了这个代码思路:加密时:先把用户的密钥A用md5加密为B,然后用B异或源文件S0得到目标文件S1,把S1存入js变量中。解密时:询问密钥,然后...

    《程序天下:JavaScript实例自学手册》光盘源码

    第12章 窗口特效与弹出式警告 12.1 无关闭按钮的窗口 12.2 鼠标控制窗口开关 12.3 使窗口只第一次访问时弹出 12.4 禁止弹出警告框 12.5 关闭窗口不提示的方法 12.6 关闭窗口时的提示 12.7 定时弹出窗口 12.8 调整...

    Asp+AJAX静态分页 亲测 可用

    //创建变量xmlhttp,并将createAjax()函数创建的对象实例赋于它 if (xmlhttp) { //如果xmlhttp对象创建成功,则执行条件语句中的程序 var content=document.getElementById('content'); //获取页面中id为content...

    JavaScript多态与封装实例分析

    本文实例讲述了JavaScript多态与封装。分享给大家供大家参考,具体如下: 1、静态语言类型和动态语言类型 编程语言按照数据类型可以分为静态语言类型和动态语言类型两大类。 1) 静态语言类型在编译时就已经确定变量...

    JavaScript仿静态分页实现方法

    本文实例讲述了JavaScript仿静态分页实现方法。分享给大家供大家参考。具体如下: 这里基于JavaScript模仿网页不刷新静态分页的功能,实际用的时候估计要做些改动,因为目前需要分页的内容是作为一个字符串变量存在...

    Javascript数组操作高级心得整理

     JavaScript对象没有静态作用域 16  关键字this 16 (4) 定义类或对象的方法 16  工厂方式 16  构造函数方式和原型方式 17  混合的构造函数/原型方式(常用方式) 18  动态原型方法(常用方式) 18  总结...

    JavaScript内核系列

    与Java,C/C++不同,Javascript是弱类型的,它的数据类型无需在声明时指定,解释器会根据上下文对变量进行实例化,比如: Js代码 1. //定义一个变量s,并赋值为字符串 2. var s = "text"; 3. print(s); 4...

    Coffeescript中文手册

    变量与作用域 8 函数 8 函数参数 9 函数调用 10 函数上下文 11 对象字面量与数组定义 11 流程控制 12 字符串插值法 14 循环和列表解析 14 数组 15 别名和存在操作符 16 类 17 实例属性 18 静态变量 19 继承与Super ...

    javascript闭包的理解和实例

    顺便提示一下: 词法作用域:变量的作用域是在定义时决定而不是执行时决定,也就是说词法作用域取决于源码,通过静态分析就能确定,因此词法作用域也叫做静态作用域。 with和eval除外,所以只能说JS的作用域机制非常...

    Javascript闭包实例详解

    闭包是Closure,这是静态语言所不具有的一个新特性。但是闭包也不是什么复杂到不可理解的东西,简而言之,闭包就是: 闭包就是函数的局部变量集合,只是这些局部变量在函数返回后会继续存在。 闭包就是就是函数的...

    php网络开发完全手册

    4.2.7 变量检测函数isset与变量释放 4.2.7 函数unset 66 4.2.8 随机函数rand与srand 66 4.3 关于引用的解释 67 4.3.1 对变量的引用 67 4.3.2 对函数的引用 68 4.3.3 引用的释放 68 4.4 小结 69 第5章 PHP中类的应用 ...

    JavaScript中原型和原型链详解

    主要介绍了JavaScript中原型和原型链详解,本文讲解了私有变量和函数、静态变量和函数、实例变量和函数、原型和原型链的基本概念,需要的朋友可以参考下

    JavaScript 俄罗斯方块游戏实现方法与代码解释

    本文实例讲述了JavaScript 俄罗斯方块游戏。...全代码采用静态类及静态变量成员组成; 全脚本通过实现代码全局配置 OLSFK.Options = {...} 定义方块起始坐标及定义各自的旋转点; 从初始化俄罗斯方块

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例038 动态输出JavaScript代码 69 实例039 当数字遇到了字符串 70 实例040 PHP程序员的基础——变量的应用 72 实例041 打印系统环境变量信息print_r($_ENV) 73 实例042 使用可变变量输出“I Like PHP!” 73 实例...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例038 动态输出JavaScript代码 69 实例039 当数字遇到了字符串 70 实例040 PHP程序员的基础——变量的应用 72 实例041 打印系统环境变量信息print_r($_ENV) 73 实例042 使用可变变量输出“I Like PHP!” 73 实例...

    ajax真分页实例(J2ee)

    本案例使用ajax技术实现分页,方案为其中一种,其他方案后面会再发,因为项目比较有针对性,所以项目规模很小,便于查看学习,使用前先修改项目中的Constant类中的相关静态变量信息(数据库连接信息)后便可部署。...

Global site tag (gtag.js) - Google Analytics