博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS OOP -04 JS中的公有成员,私有成员和静态成员
阅读量:6902 次
发布时间:2019-06-27

本文共 2893 字,大约阅读时间需要 9 分钟。

JS中的公有成员,私有成员和静态成员

  a.实现类的公有成员

  b.实现类的私有成员

  c.实现类的静态成员

 

a.实现类的公有成员

  之前定义的任何类型成员都属于公有成员的范畴,该类的任何实例都对外公开这些属性和方法.

  注意在JS中,其实没有私有的概念~

 

b.实现类的私有成员

       //私有成员            /*             * 私有成员即在类的内部实现中可以共享的成员,不对外公开.              * JS中并没有特殊的机制来定义私有成员,但可以用一些技巧来实现这个功能.             */                        /*             * 这个技巧主要是通过变量的作用域性质来实现的,在JS中,一个函数内部定义的变量称为局部变量,             * 该变量不能够被此函数外的程序所访问,却可以被函数内部定义的嵌套函数所访问.             * 在实现私有成员的过程中,正是利用了这一性质.             * 在前面提到,在类的构造函数中可以为类添加成员,通过这种方式定义的类成员,实际上共享了在构造函数内部定义的局部变量,             * 这些变量就可以看作类的私有成员.             */            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(); alert(obj1.pp);//undefined 访问不到 alert(obj1.pm);//undefined 访问不到 //***var __age =10; 一般这样定义私有变量名,包括私有的方法

 

c.实现类的静态成员

       //静态成员            /*             * 静态成员属于一个类的成员,它可以通过"类名.静态成员名"的方式访问.             * 在JS中,可以给一个函数对象直接添加成员来实现静态成员,因为函数也是一个对象,所以对象的相关操作,对函数同样适用.             * 在JS中,不能用静态成员访问实例成员,也不能用实例成员访问静态成员,两者是不相通的.             */            function class2(){
//构造函数 }; class2.staticProperty='sample';//静态属性 class2.staticMethod=function(){
//静态方法 alert(class2.staticProperty); }; class2.staticMethod(); /* * 类class1添加了一个静态属性和静态方法,并且在静态方法中引用了该类的静态属性. * 如果要给每个函数对象都添加通用的静态方法,还可以通过函数对象所对应的类Function来实现 */ //给类Function添加原型方法:showArgsCount! Function.prototype.showArgsCount=function(){
//定义靠前 alert(this.length); } function class3(a){ } class3.showArgsCount(); /* * 以上,通过Function的prototype原型对象,可以给任何函数都加上通用的静态成员,这在实际开发中可以起到很大的作用. * */
       /*prototype.js框架*/            Function.prototype.bind=function(object){                var _method=this;                return function(){                    _method.apply(object,arguments);                };            };                        Function.prototype.bindAsEventListener=function(object){                var _method=this;                return function(event){                    _method.call(object,event || window.event);                };            };

 

转载于:https://www.cnblogs.com/youguess/p/10606177.html

你可能感兴趣的文章
CSAPP:cachelab(1)
查看>>
时间序列识别代码调试版本1
查看>>
Tomcat内存溢出解决办法
查看>>
Vue:v-model指令
查看>>
Software Engineering | Strategy pattern
查看>>
ios开发系列-准备工作
查看>>
Android Studio调试手机或者安装APK的时候出现install failed test only
查看>>
js闭包
查看>>
Xcode +SVN
查看>>
设置界面分析
查看>>
SQL中DateTime转换成Varchar样式
查看>>
java.util.AbstractList
查看>>
几个常见用于解决nginx负载均衡的session共享问题的办法
查看>>
setTimeOut、setInterval与clearInterval函数
查看>>
Appium原理及版本变化细节
查看>>
iphone ios 用xcode4.2开发 访问web service的功能
查看>>
Visual Studio 代码折叠快捷键(摘要)
查看>>
《2016ThoughtWorks技术雷达峰会----雷达新趋势》
查看>>
正则【备用】
查看>>
FeatureSelectors
查看>>