问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JS对象创建时不能就即时初始化吗

发布网友 发布时间:2022-05-02 00:07

我来回答

3个回答

懂视网 时间:2022-05-17 06:22

最近使用bootstrap组件的时候发现一个易用性问题,很多简单的组件初始化都需要在JS里面写很多的初始化代码,比如一个简单的select标签,因为仅仅只是需要从后台获取数据填充到option里面,可是从后台取数据就需要js的初始化,所以导致页面初始化的时候js的初始化代码里面出现很多重复的代码,看着很闹心。于是想起bootstrap table里面的data属性来,如果能够直接在html里面使用data-*这种方式来初始化简单的组件,那该多爽。我们先来看看bootstrap table的文档:

可以看到bootstrap table里面几乎所有的属性、事件都可以用data-*这种方式来做,感觉还不错。那博主就要开始研究了。data-*这东西是哪里来的呢?

一、jquery data()初探
网上查了一圈,终于找到data-*的出处了,原来是Jquery和html5里面的,好东西,真是好东西!我们先来看看jquery的API

原始用法如下:

作用其实很明显,就是给元素加某些属性和数据,或者取值。

下面看看data()方法和html5 data-*属性的结合使用

哈哈,这个东西好,通过html5 的data-*设置的值,能够用jquery 的data()方法取到。这里的规则如下:

  • 1)所有的data属性必须以“data-”开头,
  • 2)属性用“-”隔开,
  • 3)jquery里面取属性的时候去掉“data”和“-”即可。
  • 有了这个作为基础,我们就知道如何在标签里面设置属性,然后在js里面取对应的属性了。下面就结合上次封装combobox的例子来说明下。

    二、jquery data()实现data-*初始化组件
    还记得之前JS组件系列——封装自己的JS组件,你也可以这篇里面封装了一个简单的combobox,可以通过url去后台取数据。那么下面我们仍然在这个组件的基础上做手脚,实现直接在select标签里面添加data-*属性来初始化下拉框组件。

    1、js组件封装代码

    
    
    

    很明显,就是在页面初始化完成之后通过样式选择器去初始化组件。使用了each,如果有多个.combobox样式,依次去初始化每一个。通过 $.fn.combobox.call($combobox, $combobox.data()); 调用call方法去调用combobox的初始化,call方法里面两个参数分别对应:

  • 1)当前初始化的jquery对象
  • 2)参数列表。这里通过$combobox.data()得到的就是所有html里面的data-*属性。将所有的data-*属性作为参数传入combobox的初始化方法中。
  • 2、html里面通过data-*初始化

    
    
    

    指定data-*属性。从上面我们知道这里初始化是通过样式选择器.combobox来初始化组件的,所以就要求,如果想要使用data-*做组件的初始化,必须要设置一个class="combobox"样式,这样后台才取得到需要初始化的标签。

    3、后台C#方法

    
    
    

    测试代码,没什么好说的。

    4、调试效果


    得到效果

    这样基本就完成通过data-*来初始化组件了。

    上面简单演示了下jquery data()方法结合html5 data-*属性的使用。基本上能达到需求:不用多写一行js代码直接初始化标签。使用的时候直接引用jquery.js和jquery.extension.js文件即可。但是我们知道既然是html5里面的特性,那么对浏览器就得有一定的要求了。当然,此用法功能比较初级,但是对于一些简单组件的初始化够用了。

    热心网友 时间:2022-05-17 03:30

    输入代码是没问题的,请确定你的html代码页面中有<script type="text/javascript">
    function load(v){/*执行操作*/}
    </script>
    类似这样子的函数。也就是对load函数的定义。另外有一个小问题就是,System.Web.HttpContext.Current.Response.Write("<script>window.setInterval(function(){load('test');},1000);</script>");这句话会先于html中javascript脚本的加载,所以如果在页面未加载完成时页面中已经输出了<script>window.setInterval(function(){load('test');},1000);</script>这段脚本,此时会进行执行,因此也就没有回出现无load这个函数了,当然就会报错了。解决这个问题的办法可以是在load函数定义的脚本段后放入一个Literal控件,然后把<script>window.setInterval(function(){load('test');},1000);</script>这段代码放入Literal的Text中(Literal1.Text = "<script>window.setInterval(function(){load('test');},2000);</script>";)。这样子即可解决。追问你到底在说啥呢

    热心网友 时间:2022-05-17 04:48

    所谓创建类的对象,
    是要确定地给这个对象分配足够的能够定义并规范其基本含义的数据空间;
    明确一个包含成员对象的类的空间,
    首先应明确或预算出其成员对象的空间结构,
    也即是要首先初始化其成员对象。
    js-对象初始化

    对象初始化在JavaScript中可以通过多种方法实现,包括使用`new Object()`、`Object.create()`方法或字面量标记。对象初始化表达式由花括号中的零个或多个键值对组成,描述对象的属性。在ECMAScript 2015中引入了新的标记,但请注意,在不支持的环境中,这些标记会导致语法错误。创建对象时,可以使用包含...

    js面向对象 不懂为什么要init进行初始化

    这样做也没错,我们的想法是它创建的时候其实就是在做初始化的工作,那干脆就简化它,在new的时候就让他直接自动调用init方法,省去再次手动调用,所以一般都会写成如下形式:function Test(){ this.init.apply(this, arguments);} 在init方法里面一般是做一些事件绑定,界面初始化的工作。

    js面向对象为什么要init进行初始化?

    在创建子类对象之前,会先创建父类对象。在调用子类构造器之前,在子类构造器中会先调用父类的构造器,默认调用的是父类无参数构造器。如果父类不存在可以被子类访问的构造器,则不能存在子类。如果父类没有提供无参数构造器,此时子类必须显示通过super语句去调用父类带参数的构造器。内核的初始化 内核(K...

    js面向对象 不懂为什么要init进行初始化

    额 比如你要调用对象,但是每次调用有不同的需求,初始化就不会受到干扰 大概就是这样

    javascript创建对象?

    没有显示地创建对象直接将属性和方法赋给了this对象没有return语句终于可以识别的对象的类型。使用原型定义对象类似于第一种”直接初始化法“。——其实是一种变种让人看着眼晕。希望本文所述对大家JavaScript程序设计有所帮助。JavaScript中用new操作符创建对象的时候具体发生了什么过程new操作符通过执行自定义...

    Js创建对象额几种方式

    ②多个实例均不是同一个Function的实例。第三种模式:原型模式 说明:1.函数中不对属性进行定义 2.利用prototype属性对属性进行定义 3.同样的,不推荐使用这样方式创建对象缺点:①无法传入参数,不能初始化属性值。 ②如果包含引用类型的值时,改变其中一个实例的值,则会在所有实例中体现。 第四种模式...

    JavaScript定义类或函数的几种方式小结_js面向对象

    这种方法很好,但是问题是Car的对象指向的是Array指针,Car的两个对象都指向同一个Array数组,其中一个对象car1改变属性对象的引用(数组Array)时,另一个对象car2也同时改变,这是不允许的。 同时该问题也表现在原型不能带任何初始化参数,导致构造函数无法正常初始化。这需要另一种方式来解决:那就是混合的构造函数/...

    JS的初始化方法是?

    2、写初始化方法,页面顺序执行到初始化方法时初始化 function init() { // 初始化内容 };init(); 3、在body里面写初始化方法. function init(){ // 初始化内容 }

    为什么要有js立即执行函数,存在的意义是什么

    你的代码在页面代码加载完成之后,不得不执行一些设置工作,比如附加时间处理器,创建对象等等,所有的这些工作只需要执行一次,所以没有理由创建一个可复用的命名的函数,但这些代码也需要一些临时的变量,但初始化过程结束后,就再也不会被用到了,所以将这些变量作为全局变量不是个好主意,所以我们需要...

    这句js是什么意思

    也就是一个没有任何属性和方法的对象,后面的部分指的是为_ssp_global这个对象里面的属性userConfig赋值{domain:"js2.aimoban.com"} 说白了就是给_ssp_global这个对象的属性userConfig赋值,赋值之前做了个保险就是怕没有_ssp_global这个对象,没有就先初始化,有的话直接赋值了 ...

    用一个对象初始化另一个对象 如何对对象进行初始化 对对象进行初始化 谁的功能是对象进行初始化 对象如何初始化 对象没有初始化 常对象初始化 对象的初始化方式 类的对象初始化
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    猫咪丢了之后心里很难过,然后男友担心我就重新去领养了一只小花猫,可是... 有关名侦探柯南黑暗组织!! qq上删除的好友怎么找回来,六个月以上的。只要能找到QQ号就行,我可以... 六个月内删掉的qq好友能找回吗? 急!!因欠费而停机的手机能收到短信吗 手机关机之后停机信息是否可以收到 手机欠费后冲了钱但还是欠费会收到短信吗 手机停机了,包月的流量没用完,能收到微信吗? 德州到潍坊用不用隔离? 南都周刊2011年有一篇社论≪躺在时间的河流上怀念他们≫写得很棒... js设置页面初始化状态无效是怎么回事? js面向对象为什么要init进行初始化? 如何控制jsp页面初始化加载顺序 js或jquery 如何只加载一次??? 初始化时只加载一次,之后不加载 如何让js重复初始化 极兔速递被封杀一事,是否说明极兔比他们好? js刚开始初始化页面的时候,正在请求数据的时候用一张加载图片,ajax请求并可以显示在页面时? 京东封杀申通快递,将会对申通造成什么影响? js文件初始化加载option 同时设置option属性 韵达申通圆通联手封杀极兔速递,极兔为什么会遭到这样的对待? 关于丽之水气垫cc的广告语有哪些 韵达申通圆通是如何回应“封杀”极兔速递一事的? 谁知道,中央电视台那大众CC的广告中的那首歌什么名字?(英语的) 五家快递公司出现无人派送,自身难保为何还要封杀极兔速递? 如何看待韵达、申通、圆通封杀极兔速递? 韵达申通圆通封杀极兔速递,你认为这样合理吗? 23岁正常男人的阴茎是向上勃起还是向前 韵达申通圆通联手封杀极兔速递,这是为什么? 三通一达封杀极兔速递,为何快递巨头如此抵触拼多多? 申通韵达圆通联手封杀极兔速递,这说明了什么? jsp页面初始化 怎么样在第一次初始化页面的时候就触发JS中函数 js 怎么初始化的时候让程序默认敲回车一下 我有一个js文件,两个引用js文件的页面。我访问第一个页面的时候js文件... 怎么页面初始化时执行js方法 如何用js快速地初始化数组 怎么让JS载入完之后再显示页面? 秦思容是哪个小说 看了惊悚乐园想问问有没有类似的题材 惊悚是谁作曲的? 秦思容是郭襄的原型吗 设置能用的符号 可以带什么符号 东莞现在最低工资标准是多少一个月,按多少天数算,加班如何算? 错误,无法加载ramdisk检查设备连接- 问一问 苹果在刷机过程中出现ramdisk无法加载是为什么,怎么解决? 重装系统后windows未能启动,由于内存不足,因此无法创建ramdisk Win10由于内存不足因此无法创建ramdisk设备怎么办 电脑开机提示内存不足,因此无法创建ramdisk ,然后PE也进不去 因为之前尝试安装ramdisk,但是失败了,所以现在每次开机都提示“未能成功安装设备驱动程序”,该怎么解决