JS 函数访问方式总结

本文总结了JavaScript中三种函数访问方式:函数声明、函数表达式和通过对象属性访问。在函数表达式中,通过返回值可以实现公有和私有属性的区分。使用对象属性方式访问函数常用于创建配置文件和工具类,提高代码规范性和复用性。最后讨论了直接调用函数的普通访问方式,但这种方式可能降低代码可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 函数申明、函数表达式、对象

函数申明毫无疑问,没有调用的情况下,里面的变量、函数都是不能够访问到的

function MyObject() {
    var privateVarible = 10;

    function privateFunction() {
        return false;
    }

    this.publicMethod = function() {
        return true;
    }
}

函数表达式,相当于调用函数申明,如下

function MyObject() {
    var privateVarible = 10;

    function privateFunction() {
        return false;
    }

    this.publicMethod = function() {
        return true;
    }
}

var run = MyObject();

var run = MyObject();是函数表达式,run是其引用,无论是run.privateVarible、run.privateFunction()、run.publicMethod()都是访问不到的,因为function MyObject(){…}没有返回值。

function MyObject() {
    var privateVarible = 10;

    function privateFunction() {
        return false;
    }

    this.publicMethod = function() {
        return true;
    }

    return this;
}

var run = MyObject();

alert(run.publicMethod());

有了返回值后是可以访问run.publicMethod()的,但由于只返回了this对象run.privateVarible、run.privateFunction()还是不能访问到,这样就实现了私有属性和公有属性的效果。

下面代码中test是自运行的,是函数表达式,可以访问到其中的test.f1()、test.f2()。

var test = (function(){

    function f1(){
        alert("f1");
    }

    function f2(){
        alert("f2");
    }

    return {
        f1:f1,
        f2:f2
    };
})();

对象,如果把下面函数申明当做构造函数来用的话

function MyObject() {
    var privateVarible = 10;

    function privateFunction() {
        return false;
    }

    this.publicMethod = function() {
        return true;
    }
}

var run = new MyObject();

run就是一个实例化的对象了,run.publicMethod()肯定是能够访问的,但run对象只有一个属性就是publicMethod。

二 使用对象的属性方式访问

var test = {

    f1: function (){
        alert("f1");
    },
    f2: function (){
        alert("f2");
    }
}

test.f1();

这样同样是能访问的。

用途一:
写一些配置文件(常量),让代码更加规范

var APP = {
    control: "vote-control",
    answer : "vote-answer",
    result : "vote-result",
    rush: "vote-rush",
    server:"voteSer",
    select: "vote-select",
    main:"vote-main",
    edit:"vote-edit",
    justsink:"JustSink"
};

用途二:
写工具类,作为基础工具使用

var shellcmd = {};
/**
 * 打开程序
 */
shellcmd.shellExecute = function (filePath) {
    var def = jQuery.Deferred();
    ...
}
/**
 * 读文件,同步
 * @param filePath
 * @returns {string}
 */
shellcmd.readFile = function (filePath) {
    if (!filePath)
     ...
    }
}
/**
 * 写文件,同步
 * @param {!string} content 可选,如果为空则认为是写入空字符串
 * @param {!string} filePath 文件路径
 */
shellcmd.writeFile = function (filePath, content) {
    var path=require('path');
    ...
}
/**
 * 拷贝文件
 * @param {!string} content 可选,如果为空则认为是写入空字符串
 * @param {!string} filePath 文件路径
 */
shellcmd.copyFile = function (src, des) {
    var defer = jQuery.Deferred();
    ...
}

三 最普通的访问方式

在一个js文件中建立很多的 function ,在引入该js后直接调用所需的方法,我感觉这样代码的可读性较差。

var http = require('http');
var fs = require('fs');

function loader(config) {
    ...
}

/**
 * 同步本地应用列表数据
 * @param callback
 * @param callback.info APP数据
 */
function syncLocalAppList(callback) {
    ...
}

//判断plugins文件夹是否存在
function fnmkdir(config) {
    ...
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值