• 关于

    alert函数

    的搜索结果

回答

基本上,javascript中所有数据类型都拥有valueOf和toString这两个方法,null除外。它们俩解决javascript值运算与显示的问题,本文将详细介绍,有需要的朋友可以参考下。 toString() toString()函数的作用是返回object的字符串表示,JavaScript中object默认的toString()方法返回字符串”[object Object]“。定义类时可以实现新的toString()方法,从而返回更加具有可读性的结果。JavaScript对于数组对象、函数对象、正则表达式对象以及Date日期对象均定义了更加具有可读性的toString()方法: 1.array的toString()方法将返回以逗号分隔的数组成员。比如,[1,2,3].toString()会返回字符串”1,2,3″。 2.function的toString()方法将返回函数的文本定义。比如,(function(x){return x2;}).toString()会返回字符串”function(x){return x2;}”。 3.RegExp的toString()方法与function的toString()方法类似,将返回正则表达式的文本定义。比如,/\d+/g.toString()会返回字符串”/\d+/g”。 4.Date的toString()方法将返回一个具有可读性的日期时间字符串。 5.如果 Boolean 值是 true,则返回 “true”。否则,返回 “false”。 valueOf() valueOf()函数的作用是返回该object自身。与toString()一样,定义类时可以实现新的valueOf()方法,从而返回需要的结果。JavaScript对于Date对象定义了更加具有可读性的valueOf()方法: 1.Date的valueOf()方法将返回一个时间戳数值,该数值为Date对象与1970年1月1日零时的时间差(以毫秒为单位)。其他一律返回对象本身。 在js高程里面有一段代码: 1 2 3 4 var colors = ["red", "blue", "green"]; // 创建一个包含3 个字符串的数组 alert(colors.toString()); // red,blue,green alert(colors.valueOf()); // red,blue,green alert(colors); // red,blue,green 三个输出全部一样,那么toString()和valueOf()区别到底是什么?看下一个我写的例子: 1 2 3 var arr = [1,2,3]; alert(Array.isArray(arr.valueOf())); alert(Array.isArray(arr.toString())); 结果是第一个是true而第二个是false,为什么呢,其实valueOf()调用完以后还是返回一个数组。这个数组被alert的时候会调用toString()函数,所以不是valueOf()和toString()函数相同,而是间接的调用了toString()函数! 进一步测试下: 1 2 3 4 5 var arr = [1,2,3]; arr.toString = function () { alert("你调用了toString函数"); } alert(arr.valueOf()); 结果就是我们会看到“你调用了toString函数”。 而对于数值,我们可以调用valueOf的时候直接可以获得数字进行计算,不必转化成字符串,所以不会调用toString。反言之,如果我们需要获得操作对象的字符串形式的时候就会调用其toString函数。 验证如下代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 var bbb = { i: 10, toString: function() { console.log('toString'); return this.i; }, valueOf: function() { console.log('valueOf'); return this.i; } } alert(bbb);// 10 toString alert(+bbb); // 10 valueOf alert(''+bbb); // 10 valueOf alert(String(bbb)); // 10 toString alert(Number(bbb)); // 10 valueOf alert(bbb == '10'); // true valueOf alert(bbb === '10'); // false 我的理解:valueOf的意思是返回最适合该对象类型的原始值,而toString则是将在该对象类型的原始值以字符串形式返回。 第一个 1 alert(bbb);// 10 toString 这里我们的alert函数需要是的字符串,所以获取的是字符串,而不是原始值,故而调用了toString 第二个 1 alert(+bbb); // 10 valueOf 同理,alert要的是字符串不是原始值,其实是+bbb这个东西被调用了toString,而bbb被调用了valueOf 为了验证我们这样写 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 var a = { i: 1, valueOf: function () { alert("你调用了a的valueOf函数"); return this.i; }, toString: function () { alert("你调用了a的toString函数"); return this.i; } }; var c = { i: +a, valueOf: function () { alert("你调用了c的valueOf函数"); return this.i; }, toString: function () { alert("你调用了c的toString函数"); return this.i; } }; alert(c); 其中让c=+a,那么即可知道结果,果然如此,调用了a的valueOf和c的toString 第三个 1 alert(''+bbb); // 10 valueOf 同理,我们可以把上一段我写的程序里面的c:+a改成c:''+a 第四个 1 alert(String(bbb)); // 10 toString String这个强制转换其实在其内部是调用了传入参数的toString函数…… 第五个 1 alert(Number(bbb)); // 10 valueOf 这个是有区别的,因为bbb的i属性是数值类型的,如果i为11111xxxxx这样的字符串,我们就可以看到调用了bbb的toString了 代码例子: 1 2 3 4 5 6 7 8 9 10 11 12 var c = { i: "11111xxxx", valueOf: function () { alert("你调用了c的valueOf函数"); return this.i; }, toString: function () { alert("你调用了c的toString函数"); return this.i; } }; alert(c); 第六个 1 alert(bbb == '10'); // true valueOf 这个里面的判等的顺序是,获取原始值,然后判断两边的原始值是否相等,所以调用valueOf 第七个也就是最后一个 1 alert(bbb === '10'); // false ===操作符不进行隐式转换,判全等的第一个步骤是判断类型,因为类型都不一样了,所以后面什么都不会调用 总结:valueOf偏向于运算,toString偏向于显示。 1、 在进行强转字符串类型时将优先调用toString方法,强转为数字时优先调用valueOf。 2、 在有运算操作符的情况下,valueOf的优先级高于toString。 下面给大家简单说下valueof和tostring的区别。 valueOf():返回最适合该对象类型的原始值; toString(): 将该对象的原始值以字符串形式返回。 这两个方法一般是交由JS去隐式调用,以满足不同的运算情况。 在数值运算里,会优先调用valueOf(),如a + b; 在字符串运算里,会优先调用toString(),如alert(c)。
景凌凯 2020-04-03 22:24:31 0 浏览量 回答数 0

问题

你真的已经搞懂JavaScript了吗? 热 400 请求报错 

昨天在著名前端架构师Baranovskiy的博客中看到一个帖子 题目一: if (!("a" in window)) { var a = 1; } alert(a);   题目二: ...
kun坤 2020-05-29 11:26:12 3 浏览量 回答数 1

回答

你去掉相关alert代码不就好了。如果你确实不想要系统的alert函数,你可以定义alert=function(){}为空函数,经测试firefox,chrome,IE11有效,其他的没测试
小旋风柴进 2019-12-02 02:13:13 0 浏览量 回答数 0

问题

求助jquery的$.post()函数问题

js代码如下:如果代码是这样 那么会先执行alert("123");再执行function(data)函数;如果去掉alert("123");那么function(data)函数就不会执行了。这是怎么回事?谢谢大家...
吴孟桥 2019-12-01 19:34:16 940 浏览量 回答数 1

问题

异步加载过来的html,用jquery给某个元素绑定事件,事件被重复绑定了,求解?

function fillAgentQueues(){ ApiSvc.queryAgents({},function(res){ console.log(res); if(res.success){ ...
小旋风柴进 2019-12-01 19:37:17 877 浏览量 回答数 1

回答

bind是直接绑定在一个对象上。 $('#foo').bind('click', function() { alert('User clicked on "foo."'); }); 这个例子的是绑定在 #foo 这个元素上。点击#foo元素后执行回调函数。 on方法是一个事件委托。 $('#foo').on("click", "a", function(){ alert("Goodbye!"); }); 这个例子是委托在 #foo 这个元素上,点击 #foo 的子元素 a 标签才执行回调函数。 live 方法是on方法的一种实现。 $('a').live('click', function(){ alert("Goodbye!"); }); $(document).on("click", "a", function(){ alert("Goodbye!"); }); 上面这两个方法完全相同,后者是前者的具体实现。
西秦说云 2019-12-02 02:18:36 0 浏览量 回答数 0

回答

第一种:Object 构造函数创建 var Person = new Object(); Person.name = "Nike"; Person.age = 29; 这行代码创建了 Object 引用类型的一个新实例,然后把实例保存在变量 Person 中。 第二种:使用对象字面量表示法 var Person = {}; //相当于 var Person = new Object(); var Person = { name: 'Nike'; age: 29; } 对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程。也就是说,第一种和第二种方式创建对象的方法其实都是一样的,只是写法上的区别不同 在介绍第三种的创建方法之前,我们应该要明白为什么还要用别的方法来创建对象,也就是第一种,第二种方法的缺点所在:它们都是用了同一个接口创建很多对象,会产生大量的重复代码,就是如果你有 100 个对象,那你要输入 100 次很多相同的代码。那我们有什么方法来避免过多的重复代码呢,就是把创建对象的过程封装在函数体内,通过函数的调用直接生成对象。 第三种:使用工厂模式创建对象 function createPerson(name, age, job) { var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function() { alert(this.name); }; return o; } var person1 = createPerson("Nike", 29, "teacher"); var person2 = createPerson("Arvin", 20, "student"); 在使用工厂模式创建对象的时候,我们都可以注意到,在 createPerson 函数中,返回的是一个对象。那么我们就无法判断返回的对象究竟是一个什么样的类型。于是就出现了第四种创建对象的模式。 第四种:使用构造函数创建对象 function Person(name, age, job) { this.name = name; this.age = age; this.job = job; this.sayName = function() { alert(this.name); }; } var person1 = new Person("Nike", 29, "teacher"); var person2 = new Person("Arvin", 20, "student"); 对比工厂模式,我们可以发现以下区别: 1.没有显示地创建对象 2.直接将属性和方法赋给了 this 对象 3.没有 return 语句 4.终于可以识别的对象的类型。对于检测对象类型,我们应该使用 instanceof 操作符,我们来进行自主检测: alert(person1 instanceof Object); //ture alert(person1 instanceof Person); //ture alert(person2 instanceof Object); //ture alert(person2 instanceof Object); //ture 同时我们也应该明白,按照惯例,构造函数始终要应该以一个大写字母开头,而非构造函数则应该以一个小写字母开头。 那么构造函数确实挺好用的,但是它也有它的缺点: 就是每个方法都要在每个实例上重新创建一遍,方法指的就是我们在对象里面定义的函数。如果方法的数量很多,就会占用很多不必要的内存。于是出现了第五种创建对象的方法 第五种:原型创建对象模式 function Person() {} Person.prototype.name = "Nike"; Person.prototype.age = 20; Person.prototype.jbo = "teacher"; Person.prototype.sayName = function() { alert(this.name); }; var person1 = new Person(); person1.sayName(); 使用原型创建对象的方式,可以让所有对象实例共享它所包含的属性和方法。 如果是使用原型创建对象模式,请看下面代码: function Person() {} Person.prototype.name = "Nike"; Person.prototype.age = 20; Person.prototype.jbo = "teacher"; Person.prototype.sayName = function() { alert(this.name); }; var person1 = new Person(); var person2 = new Person(); person1.name = "Greg"; alert(person1.name); //'Greg' --来自实例 alert(person2.name); //'Nike' --来自原型 当为对象实例添加一个属性时,这个属性就会屏蔽原型对象中保存的同名属性。 这时候我们就可以使用构造函数模式与原型模式结合的方式,构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性 第六种:组合使用构造函数模式和原型模式 function Person(name, age, job) { this.name = name; this.age = age; this.job = job; } Person.prototype = { constructor: Person, sayName: function() { alert(this.name); }; } var person1 = new Person('Nike', 20, 'teacher');
茶什i 2019-12-02 03:18:14 0 浏览量 回答数 0

回答

自定义函数就是说自己写的函数,只有自己调用,或是自己共享给别人后别人才可以调用的。也可以理解为私有函数。 function a(){alert(1)};  //定义一个函数,名字是a。 函数调用,就是让函数执行。 a();  //函数名字后面加一对小括号就可以执行了, 页面中将弹出一个  答案来源于网络
养狐狸的猫 2019-12-02 02:14:25 0 浏览量 回答数 0

回答

Function()构造函数是在每次被调用的时候,动态的创建一个新的函数对象(动态变异)。通过new Function定义的函数的词法作用域链只有顶层作用域,不包含闭包作用域(详见链接2)。 建议不使用Function,而使用function。修改后Demo -> http://jsfiddle.net/fJgN4/点击预览。 function test () { alert('test'); } var func = function(){} return test(); ; func(); 或者:->http://jsfiddle.net/N4dhQ/点击预览 全选复制放进笔记test = ["alert('test');"]; func= Function.apply(null, test ); func();
a123456678 2019-12-02 02:03:57 0 浏览量 回答数 0

问题

关于objective-c UIAlert button不实现

在函数中有一个UIAlert: - (void)loadJSON { Reachability *networkReachability = [Reachability reachabilityForInternetConnect...
爵霸 2019-12-01 20:25:58 974 浏览量 回答数 0

问题

关于Javascript中confirm函数的逻辑问题

在以下函数中,弹出信息框之后,我点击确认,返回true,弹出来的却是else的内容,如果我点击取消,弹出的也是else的内容。如果我改变变量name的名字,那么逻辑判断正确。请问是这个name变量的名字有什么问题吗? var name =...
小旋风柴进 2019-12-01 19:37:54 1045 浏览量 回答数 1

问题

ajax回调函数的问题

ajax请求成功后会调用success回调函数,但是不知道为什么当后台请求出错后,这个ajax请求不会执行error回调函数,求大神指导! $.ajax({ type: "POST", con...
a123456678 2019-12-01 20:23:17 832 浏览量 回答数 1

问题

ajax请求回调函数的问题。

ajax请求成功后会调用success回调函数,但是不知道为什么当后台请求出错后,这个ajax请求不会执行error回调函数,求大神指导!代码如下: $.ajax({ type: "POST", contentType: "applicat...
a123456678 2019-12-01 19:23:23 1049 浏览量 回答数 1

问题

ajax请求回调函数的问题。

ajax请求成功后会调用success回调函数,但是不知道为什么当后台请求出错后,这个ajax请求不会执行error回调函数,求大神指导!代码如下: $.ajax({ type: "POST", contentType: "...
小旋风柴进 2019-12-01 19:28:11 735 浏览量 回答数 1

问题

chrome 不能在onload的时候调用alert或confirm?

我有一个页面是这样写的 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; chars...
a123456678 2019-12-01 20:14:00 996 浏览量 回答数 1

回答

声明函数: function a(){} 赋值 var a = function(){} 使用Function 构建函数 new Function('alert(1)')
mrluobo 2019-12-02 00:52:21 0 浏览量 回答数 0

问题

ES6中的模板字符串和新XSS Payload

ES6中的模板字符串和新XSS Payload 众所周知,在XSS的实战对抗中,由于防守方经常会采用各种各样严格的过滤手段来过滤输入,所以我们使用的XSS Payload也会...
移动安全 2019-12-01 21:38:52 2692 浏览量 回答数 2

问题

jssdk的问题

原版demo的index.jsp,死活都不执行dd.ready或者dd.error的回调函数。 dd.config已经配置正确。看了一下dingtalk.js的代码,其中error:function(a){m&#...
一直平凡购 2019-12-01 21:12:27 6791 浏览量 回答数 4

回答

1、对已有对象进行扩充方法和属性 var object = new Object(); object.name = "zhangsan";//每个对象需要写这些语句 object.sayName = function(name){//每个对象需要写这些语句 this.name = name; }; object.sayName("lisi"); alert(object.name); 2、工厂方式创建对象 function createObject() { var object = new Object(); object.username = "zhangsan"; object.password = "123456"; object.get = function(){ alert(this.username + "," + this.password); } return object; } var object1 = createObject(); var object2 = createObject(); object1.get(); object2.get(); // 带参数的构造方法 function createObject(username, password){ var object = new Object(); object.username = username; object.password = password; object.get = function(){//缺点是,多少个对象则方法就有多少个 alert(this.username + ", " + this.password); } return object; } var object1 = createObject("zhangsan",123456); object1.get(); // 最佳改进方式 function get(){//使该函数被多个对象共享 alert(this.username + ", " + this.password); } function createObject(username, password){//创建对象 var object = new Object(); object.username = username; object.password = password; object.get = get; return object; } var object1 = createObject("zhangsan", "123456"); var object2 = createObject("wangwu", "654321"); object1.get(); object2.get(); 3、构造函数方式创建对象 function Person(){ //在执行第一行代码欠,js引擎会为我们生成一个对象 this.username = "zhangsan"; this.password = "123"; this.getInfo = function(){ alert(this.username + ", " + this.password); } //此处有一个隐藏的return语句,用于将之前生成对象返回。 } var p1 = new Person(); p1.getInfo(); //带参数 function Person(username, password){ this.username = username; this.password = password; this.getInfo = function(){ alert(this.username + ", " + this.password); } } var p1 = new Person("zhangsan","1234546"); p1.getInfo(); 4、原型(“prototype”)方式 function Person(){} Person.prototype.username = "zhangsan"; Person.prototype.password = "123456"; Person.prototype.getInfo = function(){ alert(this.username + ", " + this.password); } var person = new Person(); var person2 = new Person(); person.username = "haha"; person.getInfo(); person2.getInfo(); //单纯使用原型方式定义对象无法在构造函数中为属性赋值,只能在对象生成后再去改变属性值 function Person(){} Person.prototype.username = new Array(); Person.prototype.password = "123456"; Person.prototype.getInfo = function(){ alert(this.username + ", " + this.password); } var person = new Person(); var person2 = new Person(); person.username.push("zhangsan"); person.username.push("lisi"); person.password = "321"; person.getInfo(); person2.getInfo(); 5、综合方式(原型+构造函数方式搭配) function Person(){ this.username = new Array();//不被多个对象共享 this.password = "123"; } Person.prototype.getInfo = function()//被多个对象共享 { alert(this.username + "," + this.password); } var p1 = new Person(); var p2 = new Person(); p1.username.push("zhangsan"); p2.username.push("lisi"); p1.getInfo(); p2.getInfo(); 6、动态原型方式 function Person(){ this.username = "zhangsan"; this.password = "123"; //通过标志量让所有的对象共享方法 if(typeof Person.flag == "undefined"){ alert("prototype"); Person.prototype.getInfo = function() { alert(this.username + ", " + this.password); } Person.flag = true; } } var p = new Person(); var p2 = new Person(); p.getInfo(); p2.getInfo(); ps:来源网络
元芳啊 2019-12-02 00:54:49 0 浏览量 回答数 0

回答

因为 $('p').hide(2000) 这个隐藏动作是异步的,但alert是同步的,并且会禁止浏览器的相关操作,也就是说,alert提示并点击确定按钮以后页面才能正常执行,p的隐藏动作才会开始。 导致异常的原因是 hide 控制的隐藏动作是异步执行的。因为如果是同步执行的,那么2000毫秒内浏览器不能做任何其他操作 包括 点击超链接之类的,那么你可以想想了,如果变成异步操作,就可以在所有业务相关代码执行完了以后,再去执行异步的操作。详情去研究一下javascript异步机制。 hide方法可以带一个回调函数,也就说等动画执行完了再执行的函数。 如果你想在p隐藏以后弹出提醒可以这么做 $('p').hide(2000,function(){/回调执行/}); $(document).ready(function(){ $("button").click(function(){ $('p').hide(2000, function () { alert('The paragraph is now hidden'); }); }); });
a123456678 2019-12-02 03:09:04 0 浏览量 回答数 0

回答

function show() { alert('111'); }是一个函数,加入html头部应该是不会自动执行的,除非是事件触发它执行,如果要让他一开始就执行,就不需要写在函数里面
小旋风柴进 2019-12-02 02:11:45 0 浏览量 回答数 0

回答

1.添加多个事件处理程序执行的顺序不同 addEventListener: var btn=document.getElementById("myBtn"); btn.addEventListener("click",function(){ alert(1); },false); btn.addEventListener("click",function(){ alert(2); },false); //执行结果 1 ,2 attachEvent: var btn=document.getElementById("myBtn"); btn.attachEvent("onclick",function(){ alert(1); }); btn.attachEvent("onclick",function(){ alert(2); }); //执行结果 2 ,1 事件处理程序的作用域不同 addEventListener: var btn=document.getElementById("myBtn"); btn.addEventListener("click",function(){ console.log(this.id); // myBtn },false); attachEvent: var btn=document.getElementById("myBtn"); btn.attachEvent("onclick",function(){ alert(this===window); // true }); 移除绑定事件 removeEventListener() 和 detachEvent() 移除 addEventListener 事件: element.removeEventListene(event, function, useCapture) event: 事件名,注意不使用“on”前缀,如 click function: 指定事件触发时执行的函数 useCapture: 指定事件是否在捕获或冒泡阶段执行 true: 在捕获阶段执行 false: 在冒泡阶段进行,默认值为false 如果添加时用的捕获阶段,那么在移除时也要用捕获阶段,否则无法移除它们 如果是同一个元素同一个调用函数同一个useCapture值绑定多次,在移除时只需要执行一次移除 移除 attachEvent 事件: element.detachEvent(event, function) event: 事件名,注意要使用“on”前缀,如 onclick function: 指定事件触发时执行的函数
珍宝珠 2020-02-14 14:24:22 0 浏览量 回答数 0

回答

在post函数外面alert(ajaxData[0]),是一个undefined,测试为undefined是回调函数还未获得数据,而你已经在测试了,正确的要加上,success:runction(),在此之后数据是得到的
吴孟桥 2019-12-02 02:29:19 0 浏览量 回答数 0

问题

将JavaScript数组转换为字符串

我试图遍历“值”列表并将其转换为字符串。这是代码: var blkstr = $.each(value, function(idx2,val2) { var str = idx2 + ":&#...
保持可爱mmm 2020-02-08 10:36:56 0 浏览量 回答数 1

回答

肯定报错了,看看log找原因###### ajax走success还是走error是看你controller的返回。F12 看看Response是什么 ###### 有可能你后端返回的不是HTTP 200 也有可能你返回的比如JSON有问题导致parsererror! 把返回的JSON复制到http://www.bejson.com/去校验一下看看。 ######$.getJSON().fail(function(jqXhr, textStatus) {console.error(textStatus)}) 看控制台打印了什么######我认为是你的type写的是json 但是你返回的数据类型并不是json的######可能是回调函数中,dataType的格式有问题######返回不是json?######在error里面  alert一下返回的是什么  如: error: function(XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); alert(errorThrown); }######      @ResponseBody
kun坤 2020-05-29 11:35:42 0 浏览量 回答数 0

回答

没有区别window.clearInterval === clearInterval// true更具体一点,浏览器环境中 window 即 JS 运行的全局对象,除了 JS 语言定义的函数(如 parseInt)之外的所有你可以直接使用的函数及变量(如 setInterval、alert、document)都是全局对象 window 的属性。
a123456678 2019-12-02 02:05:49 0 浏览量 回答数 0

问题

javascript中的一个小问题

function clickButton() { dynamicInsert("dynamic.js"); show(); } <input type="button" value="OK"> 这个是html界面中的一个...
小旋风柴进 2019-12-01 20:23:07 935 浏览量 回答数 1

问题

通过getJSON发送请求,回调函数如何提取返回数据 400 请求报错 

发送请求的代码                         phoneNumber="1"; pwd="1"; registerUrl = registerUrl &#...
kun坤 2020-05-29 09:52:52 3 浏览量 回答数 1

问题

如何测试字符串是否为JSON??mysql

我有一个简单的AJAX调用,服务器将返回包含有用数据的JSON字符串或PHP函数产生的错误消息字符串mysql_error()。如何测试此数据是JSON字符串还是错误消息。 最好使用一个称为的函数isJSON,...
保持可爱mmm 2020-05-17 09:14:23 2 浏览量 回答数 1

问题

如何测试字符串是否为JSON??mysql

我有一个简单的AJAX调用,服务器将返回包含有用数据的JSON字符串或PHP函数产生的错误消息字符串mysql_error()。如何测试此数据是JSON字符串还是错误消息。 最好使用一个称为的函数isJSON,...
保持可爱mmm 2020-05-17 09:37:21 0 浏览量 回答数 1

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务