javascript - 一个组件的的代码模式问题,不太懂请教一下,widget语法问题
黄舟
黄舟 2017-04-10 17:18:16
[JavaScript讨论组]
var workSpace = window.workSpace || {};
//完整代码太多不切了,我把相关代码简单贴一下,
;(function($,window)
{
    //这里是下面要用到的部件FormArray
    $.widget(ui.components,{
        //some code here
    });
    //这个继承上面的部件,是真正调用的函数
    $.widget('ui.textField',$.ui.components,{
        //Yon know it;
    });
    workSpace.FormArray=(function(){
       var fn = function(){this._store = []};
       fn.prototype={
           push:function(item){
               this._store.push(item);
           },
           getValue:function(){
               //无关
           },
           setValue:function(data){
               $.each(this._store,function(key,value){
                   $.each(value,function(index,componentType){
                       //就是这句不懂,这貌似是个函数执行的语句;
                       $("#"+index)[componentType]('setValue',data[index])
                   })
               })
           }
       };
       return fn;
    })()
})(jQuery,window)

//下面来了,函数的调用执行
//新建实例
workSpace.subSpace.formArray = new wokrSpace();
//生成dom实例
$("#ai_album").textfield({
    //options
});
//为dom元素设置标记和生成类型
workSpace.subSpace.formArray.push({'ai_album':"textfield"});
//灌数据
workSpace.subSpace.formArray.setValue({'ai_album':'测试内容'});
//我的console结果
console.log($("#"+index)[componentType]);
//function(){/*some code*/},我知道应该是一个函数,但是感觉很奇怪
//因为这里widge的用法方法正常是$('#'+index).[componentType]();
//$('#ai_album').textField();但是却少了一个点仍然能执行
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(1)
黄舟

我想明白了,自己回答一下,菜鸟看到也可以学习一下
函数的调用有两种方式成员式访问和hashmap式访问

var obj = {name:"tom",age:19,'fullname':'tom Li'}
obj.name//这是成员式访问方式
obj['name'] //这是hashmap访问方式
//同理
$("#obj")[component](param1,param2)
这种写法当然是对的

是我早上半睡半醒之间突然想到的,是周公给我的提示吗?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号