Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何隐藏功能_Javascript_Jquery_Javascript Framework - Fatal编程技术网

Javascript 如何隐藏功能

Javascript 如何隐藏功能,javascript,jquery,javascript-framework,Javascript,Jquery,Javascript Framework,嗨 我有一个包含javascript文件的主文件 在我的javascript文件中,我有这个 $(document).ready(function(){ //some functions here }); 我希望所有的函数都可以在这个页面上使用,我知道你可以通过如下操作将它们隐藏在javascript的外部世界中 (function(){ $document.ready(function(){ //my functions )}; }).init(); var mySpace = {

我有一个包含javascript文件的主文件

在我的javascript文件中,我有这个

$(document).ready(function(){

  //some functions here

});
我希望所有的函数都可以在这个页面上使用,我知道你可以通过如下操作将它们隐藏在javascript的外部世界中

(function(){
$document.ready(function(){
//my functions
)};
}).init();
var mySpace = {};
mySpace.init = function() {
    // your init functions here
};
但我不能100%确定它会被称为什么,或者它是否是正确的方式


任何一个对此有所了解的人都会帮上大忙

就像第一条评论说的,你不能对用户隐藏他们,如果他们真的想看,他们会看到的。 如果你真的想,你可以用某种方式清理它们,比如

(function(){
$document.ready(function(){
//my functions
)};
}).init();
var mySpace = {};
mySpace.init = function() {
    // your init functions here
};
准备好了吗,你只要打电话

mySpace.init();

我不确定这是否是你想要的,但这是我理解问题的方式,就像第一条评论说你不能向用户隐藏他们,如果他们真的想看,他们会看到的。
(function(){
    var secret1 = function(msg) {console.log("Secret Message:" + msg);}
    $document.ready(function(){
        secret1("this can only be called from within");
    )};
})();
secret1("this will cause a script error");
如果你真的想,你可以用某种方式清理它们,比如

(function(){
$document.ready(function(){
//my functions
)};
}).init();
var mySpace = {};
mySpace.init = function() {
    // your init functions here
};
准备好了吗,你只要打电话

mySpace.init();

我不确定这是否是您想要的,但这是我理解问题的方式。听起来您正在寻找的是一个“javascript模糊器”。这是一个例子。这使得代码更难阅读和复制。但正如其他人所说,您实际上无法完全隐藏javascript。

听起来您正在寻找的东西是一个“javascript模糊器”。这是一个例子。这使得代码更难阅读和复制。但正如其他人所说,您实际上无法完全隐藏javascript。

在javascript中,函数中声明的所有内容都只能在该函数中使用(除非您声明的变量没有关键字var)

(function(){
    var secret1 = function(msg) {console.log("Secret Message:" + msg);}
    $document.ready(function(){
        secret1("this can only be called from within");
    )};
})();
secret1("this will cause a script error");
(function() {

    var doStuff = function() {
        // Not Accessible
        console.log('You can\'t reach me!');
    }

    return {
        'init': function() {
            // Accessible
            doStuff();
        }
    }


})().init();
因此,传递给$().ready()的函数中的所有内容仅在该函数中可用

$(document).ready(function () {
    //all code here is scoped inside this function, so it can't be accessed
    // outside of this function

}); 

在javascript中,函数内声明的所有内容仅在该函数内可用(除非您声明的变量没有关键字var)

因此,传递给$().ready()的函数中的所有内容仅在该函数中可用

$(document).ready(function () {
    //all code here is scoped inside this function, so it can't be accessed
    // outside of this function

}); 

这里的问题是JavaScript本质上是一种客户端脚本语言,除非使用服务器端JavaScript应用程序,如

只要JavaScript以这种方式使用,整个代码都将被下载,就像从网站下载.txt文件一样。唯一真正的区别是“.js”扩展及其在html
标记或AJAX调用中的包含将强制用户的浏览器将其呈现为JavaScript


但是,如果您想让用户更难找到脚本,这是可行的。我建议您的网站通过AJAX检索脚本并将其附加到DOM中。你可以通过使用或将你的脚本制作成一个“应用程序”来实现这一点。该脚本不会作为链接出现在DOM中,用户实际上需要搜索它。您可以通过脚本使其变得更加困难(而不损害站点的完整性)。这将使它运行得更快,同时无意中降低前端的可读性。

这里的问题是,JavaScript本质上是一种客户端脚本语言,除非使用服务器端JavaScript应用程序,如

只要JavaScript以这种方式使用,整个代码都将被下载,就像从网站下载.txt文件一样。唯一真正的区别是“.js”扩展及其在html
标记或AJAX调用中的包含将强制用户的浏览器将其呈现为JavaScript


但是,如果您想让用户更难找到脚本,这是可行的。我建议您的网站通过AJAX检索脚本并将其附加到DOM中。你可以通过使用或将你的脚本制作成一个“应用程序”来实现这一点。该脚本不会作为链接出现在DOM中,用户实际上需要搜索它。您可以通过脚本使其变得更加困难(而不损害站点的完整性)。这将使其运行更快,同时无意中降低前端的可读性。

在JavaScript中,只有函数作用域(try-catch中的异常参数是异常)。ES5将允许您使用
let
(没有双关语)来实现块范围,但在大多数UAs实现之前,它不会有用

因此,如果使用outside是指dom就绪事件之外,那么您的函数对外部世界是隐藏的

$( document ).ready( function () {
    var myFunc = function () {};
} );

myFunc();// <- ReferenceError: myFunc is not defined
$(文档).ready(函数(){
var myFunc=函数(){};
} );

myFunc();// 在JavaScript中,只有函数作用域(try-catch中的异常参数是异常)。ES5将允许您使用
let
(没有双关语)来实现块范围,但在大多数UAs实现之前,它不会有用

因此,如果使用outside是指dom就绪事件之外,那么您的函数对外部世界是隐藏的

$( document ).ready( function () {
    var myFunc = function () {};
} );

myFunc();// <- ReferenceError: myFunc is not defined
$(文档).ready(函数(){
var myFunc=函数(){};
} );

myFunc();// 您无法真正隐藏函数,因为它位于客户端下载的文件的源代码中,但您可以使其隐藏,以便它们无法从javascript访问您的函数

(function() {

    var doStuff = function() {
        // Not Accessible
        console.log('You can\'t reach me!');
    }

    return {
        'init': function() {
            // Accessible
            doStuff();
        }
    }


})().init();

您无法真正隐藏函数,因为它位于客户端下载的文件的源代码中,但您可以使其隐藏,以便它们无法从javascript访问您的函数

(function() {

    var doStuff = function() {
        // Not Accessible
        console.log('You can\'t reach me!');
    }

    return {
        'init': function() {
            // Accessible
            doStuff();
        }
    }


})().init();

如果您正在讨论访问修饰符,如
public
private
等,那么请查看Javascript是如何处理此问题的。以下是关键组件:

//constructor function (class)
function Maths(x, y) {
//public properties
    this.x =x;
    this.y = y;

    //public methods
    this.add = function () { _sum = x + y; return _sum; }
    this.mod = function () { _mod = x % y; return _mod; }

    //public method calls private method
    this.show = function () {
    this.add();
    this.mod();
    showResult();
}

//private variables
var _sum=0;
var _mod=0;

//private methods
function showResult() {
    alert( "sum: " + _sum + ", mod: " + _mod );
}

}
//end function

//create instance
var plus = new Maths(3, 4);
plus.show();

//static method multiply, you can use it without instance of Maths
Maths.multiply = function (x,y) {  return x * y; }

//call static method by constructor function (class) without instance of Maths
var result = Maths.multiply(5,7);
alert(result);
//output: 35

如果您正在讨论访问修饰符,如
public
private
等,那么请查看Javascript是如何处理此问题的。以下是关键组件:

//constructor function (class)
function Maths(x, y) {
//public properties
    this.x =x;
    this.y = y;

    //public methods
    this.add = function () { _sum = x + y; return _sum; }
    this.mod = function () { _mod = x % y; return _mod; }

    //public method calls private method
    this.show = function () {
    this.add();
    this.mod();
    showResult();
}

//private variables
var _sum=0;
var _mod=0;

//private methods
function showResult() {
    alert( "sum: " + _sum + ", mod: " + _mod );
}

}
//end function

//create instance
var plus = new Maths(3, 4);
plus.show();

//static method multiply, you can use it without instance of Maths
Maths.multiply = function (x,y) {  return x * y; }

//call static method by constructor function (class) without instance of Maths
var result = Maths.multiply(5,7);
alert(result);
//output: 35

你不能真的隐藏Javascript。访问者的浏览器需要访问它,如果浏览器可以访问它,访问者也可以。您可以将Javascript放在外部文件中,但这只是组织问题,而不是安全问题