javascript中定义私有方法说明(private method)
一度以为在javascript的世界里,所有方法都是公有的,无法真正从技术上定义一个私有方法,今天又一次发现:其实我错了!
代码如下:
var Person = function(name,sex){
this.name = name;
this.sex = sex;
var _privateVariable = "";//私有变量
//构造器中定义的方法,即为私有方法
function privateMethod(){
_privateVariable = "private value";
alert("私有方法被调用!私有成员值:" + _privateVariable);
}
privateMethod(); //构造器内部可以调用私有方法
}
Person.prototype.sayHello = function(){
alert("姓名:" + this.name + ",性别:" + this.sex);
}
var p = new Person("菩提树下的杨过","男");
p.sayHello();
//p.privateMethod();//这里将报错,私成方法无法被实例调用
alert(p._privateVariable);//显示: undefined
说明:类的构造函数里定义的function,即为私有方法;而在构造函数里用var声明的变量,也相当于是私有变量。(不过类比于c#这类强类型语言中的私有成员概念还是有区别的,比如无法在非构造函数以外的其它方法中调用)
类似的,我们还能实现类似set,get属性的封装
代码如下:
var Person = function(){
var salary = 0.0;
this.setSalary = function(value){
salary = value;
}
this.getSalary = function(){
return salary;
}
}
var p = new Person();
p.setSalary(1000);
alert(p.getSalary());//返回1000
alert(p.salary);//返回undefined
注:js中的"变量作用域","函数调用上下文(this)","闭包","原型链"这几个概念确实值得花点工夫理解,这几道坎跨过去了,js新手(比如我辈之流)的水平相信也将小上一个新台阶.
相关推荐
-
js面向对象之公有、私有、静态属性和方法详解
现下,javascript大行其道,对于网站开发人员来说,javascript是必需掌据的一门语言,但随着jquery等框架的流行和使用,许多人对于原生javascript缺乏深入的理解,习惯了函数式的编辑风格,对于闭包.原型总是说不清道不明.对于js面向对象蹩脚的用着,而要了解js面向对象,就必需先了解js中什么是公有方法.特权方法.静态方法 方法/步骤 1.公有属性和公有方法 function User(name,age){ this.name = name;//公有属性 this.age
-
js静态方法与实例方法分析
js静态方法 复制代码 代码如下: function foo(){} // 声明类 foo.method = function(){} // 方法体 使用:foo.method() js实例方法 function foo(){ // 声明类 this.method = function(){ // 方法体 } } 使用:var f = new foo(); f.method();
-
JS特权方法定义作用以及与公有方法的区别
定义特权方法 在构造函数内部通过this关键字定义的的方法,可以被实例化的对象继承所调用. 复制代码 代码如下: var Student = function(name) { var _name = name; //私有属性 //特权方法 this.getName = function() { return _name; }; this.setName = function(name) { _name = name; }; }; var s1 = new Student('zhangsan');
-
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
私有方法:私有方法本身是可以访问类内部的所有属性的,即私有属性和公有属性.但是私有方法是不可以在类的外部被调用. 私有方法写法: 复制代码 代码如下: function myClass () { var private_attribute = initial_value; function private_method () { } var private_method2 = function () { } } 实例showpet()就是一个私有方法 复制代码 代码如下: var pet=fun
-
js面向对象之静态方法和静态属性实例分析
本文实例讲述了js面向对象之静态方法和静态属性.分享给大家供大家参考.具体分析如下: 先看如下代码: 复制代码 代码如下: <script type="text/javascript"> function Bird(){ this.wing = 2; this.fly = function(){ alert("我是鸟,我会飞"); } } var maque = new Bird();//创建maque对象后,我们可以使用Bird的方法和属性
-
javascript中定义私有方法说明(private method)
一度以为在javascript的世界里,所有方法都是公有的,无法真正从技术上定义一个私有方法,今天又一次发现:其实我错了! 复制代码 代码如下: var Person = function(name,sex){ this.name = name; this.sex = sex; var _privateVariable = "";//私有变量 //构造器中定义的方法,即为私有方法 function privateMethod()
-
java9在interface中定义私有方法详解
一.Java 9接口定义私有方法 从Java 9开始,我们可以在Interface接口中添加private的私有方法和私有静态方法.这些私有方法将改善接口内部的代码可重用性.例如,如果需要两个默认方法来共享代码,则私有接口方法将允许它们共享代码,但不将该私有方法暴露给它的实现类调用(后文中会给大家举一个例子). 在接口中使用私有方法有四个规则: 接口中private方法不能是abstract抽象方法.因为abstract抽象方法是公开的用于给接口实现类实现的方法,所以不能是private. 接口
-
Ruby定义私有方法(private)的两种办法
#定义私有方法途径1: class C def public_method private_method end def private_method end private :private_method #定义方法为私有 end #定义私有方法途径2: class C def public_method private_method end private def private_method #定义私有方法 end end C.new.public_method
-
JavaScript中定义类的方式详解
本文实例讲述了JavaScript中定义类的方式.分享给大家供大家参考,具体如下: Javascript本身并不支持面向对象,它没有访问控制符,它没有定义类的关键字class,它没有支持继承的extend或冒号,它也没有用来支持虚函数的virtual,不过,Javascript是一门灵活的语言,下面我们就看看没有关键字class的Javascript如何实现类定义,并创建对象. 一.定义类并创建类的实例对象 在Javascript中,我们用function来定义类,如下: function Sh
-
JavaScript 中创建私有成员
目录 1.使用闭包 2.使用 ES6 类 3.使用 ES2020 提案 4.使用 WeakMap 5.使用 TypeScript 前言: 面向对象编程语言中的 private 关键字是一个访问修饰符,可用于使属性和方法只能在声明的类中访问.这使得隐藏底层逻辑变得容易,这些底层逻辑应该被隐藏起来,并且不应该与类的外部交互. 但是如何在 JavaScript 中实现类似的功能呢? 没有保留关键字 private ,但在新的标准中 JavaScript 有自己的方法来创建类私有成员,但目前还处于 ES
-
javaScript中定义类或对象的五种方式总结
第一种方式: 工厂方法 能创建并返回特定类型的对象的工厂函数(factory function). function createCar(sColor){ var oTempCar = new Object; oTempCar.color = sColor; oTempCar.showColor = function (){ alert(this.color); }; return oTempCar; } var oCar1 = createCar(); var oCar2 = createCa
-
Javascript中的call()方法介绍
在Mozilla的官网中对于call()的介绍是: 复制代码 代码如下: call() 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法. Call() 语法 复制代码 代码如下: fun.call(thisArg[, arg1[, arg2[, ...]]]) Call() 参数 thisArg 复制代码 代码如下: 在fun函数运行时指定的this值.需要注意的是,指定的this值并不一定是该函数执行时真正的this值,如果这个函数处于非严格模式下,则指定为nul
-
JavaScript 中调用 Kotlin 方法实例详解
JavaScript 中调用 Kotlin 方法实例详解 Kotlin 编译器生成正常的 JavaScript 类,可以在 JavaScript 代码中自由地使用的函数和属性 .不过,你应该记住一些微妙的事情. 用独立的 JavaScript 隔离声明 为了防止损坏全局对象,Kotlin 创建一个包含当前模块中所有 Kotlin 声明的对象 .所以如果你把模块命名为 myModule,那么所有的声明都可以通过 myModule 对象在 JavaScript 中可用.例如: fun foo() =
-
比较常见的javascript中定义函数的区别
比较常见的javascript中定义函数的区别主要通过以下三个方面给大家讲解,需要的朋友参考下吧 1:调用关键字function来构造 如: function distance(x1,x2,y1,y2) { var dx=x2-x1; var dy=y2-y1; return Math.sqrt(dx*dx+dy*dy); } 2:使用Function()构造函数 如: var f=new Function*"x","y","return x*y"
-
javascript中一些util方法汇总
javascript中一些util方法汇总 /***************原生对象工类方法****************/ /** * 判断非空 * @param obj * @returns {boolean} */ function isEmpty(obj) { if (obj == undefined || obj == null || new String(obj).trim() == '') { return true; } else { return false; } } /**
随机推荐
- Windows使用docker打开新窗口error解决办法
- Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录
- asp.net不用设置iis实现url重写 类似伪静态路由
- PHP5.3新特性小结
- PHP数据库开发知多少
- 实现前后端数据交互方法汇总
- asp下如何在ADO服务器端利用好缓存技术?
- 基于Java回顾之多线程详解
- Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
- PHP array_multisort() 函数的深入解析
- jQuery根据name属性进行查找的用法分析
- PCAnywhere11.5中英文图解使用教程
- Spring Boot启动过程完全解析(一)
- 详谈JSON与Javabean转换的几种形式
- C# 复制指定节点的所有子孙节点到新建的节点下
- .NET读写Excel工具Spire.Xls使用 对数据操作与控制(4)
- LaravelS通过Swoole加速Laravel/Lumen详解
- VUE路由动态加载实例代码讲解
- win10环境下安装Docker的实现
- PHP hex2bin()函数用法讲解