这是在Javascript / node.js中执行私有函数的正确方法吗?
我在node.js中编写的一个类如下所示:
module.exports = exports = function(){ return new ClassA() }; function ClassA(){ this.myvariable = 0; }
我有一个function,我想成为私人。 为了理解这个函数是否在构造函数之外声明的,它本质上是一个静态函数,它不能引用this.myvariable。
是处理这个正确的方法来在这样的构造函数中声明函数:
//within constructor this.myFunction = function myFunction(){ console.log(this.myvariable) }
或者有没有更好的方法来做到这一点,不会给我一个潜在的巨大的构造函数?
编辑:它看起来像我误解了这里的东西,因为上述代码甚至不工作…
拥有一个私有函数的最简单方法就是在类之外声明一个函数。 原型函数仍然可以很好地引用它,并将this
作用域传递给.call()
function privateFunction() { console.log(this.variable) } var MyClass = function () { this.variable = 1; } MyClass.prototype.publicMethod = function() { privateFunction.call(this); } var x = new MyClass(); x.publicMethod()
是的,你可以做一个私人的方法,但它不能成为原型的一部分
function ClassA() { var myvariable; var private = function() // This is private method { myvariable = 0; } this.public = function() // This is public method { private(); } }
Javascript 公共职能
ClassA.prototype.myFunction = function (string) { //your logic }
另一种公共职能
function ClassA(){ this.myvariable = 0; var MyFunction3 = function () { //your logic }; this.MyFunction2 = function () { //your logic }; }
JavaScript的私人function
function ClassA() { function MyFunction() { //your logic } }
我希望访问这个链接 ,将描述你的每一口井。
其实在javascript中没有class。
看一个json对象的构造函数:
var ClassA=function() { this.publicFunction=function (){ console.log("public function"); } function privateFunction(){ console.log("private function"); } return this; }
那么你使用new来创build一个ClassA:
var a=new ClassA();
你可以使用publicFunction,但是你不能使用私有函数。
a.publicFunction(); a.privateFunction();//you can't do this
对你有帮助吗?
无论你将不添加到module.exports
将是私人的module
,不能从模块外部访问。 在控制器内部也将这个参考存储到局部variables中
var self = this;
你可以使用揭示模块模式。
var myNameSpace = function() { var current = null; function init() { … } function change() { … } function verify() { … } return{ init:init, change:change } }(); module.exports = exports = myNameSpace;
这种方式init
和change
将public
,validation将是私人的。
你可以看到道格拉斯·克罗克福德私人成员的风格。 http://javascript.crockford.com/private.html