• 关于

    javascript函数方法

    的搜索结果

回答

如何实现 JavaScript RPC 应用 一、一个 JavaScript RPC 的实现 1、RPC工作流程 JavaScript RPC 的简单实现过程是: 在客户端JavaScript脚本中,将要调用的服务端PHP函数名和函数参数(本地的JavaScript变量值)作为要传输的数据,通过Ajax传输到服务端,同时,Ajax设置一个回调函数,以便使用服务端函数的返回结果。在服务端PHP脚本中,接收Ajax传输的数据,从中取出要执行的函数名和函数参数。然后执行指定的函数,并将执行函数的返回值作为传输的数据,直接输出到浏览器,以此作为响应AJax的请求。客户端的Ajax在接受服务端的响应后,把返回的数据传递给AJax的回调函数。到此完成了一个RPC的流程。 2、传输的数据 在RPC执行过程中,客户端与服务端需要相互传输数据,我们分别称之为客户端数据和服务端数据。对此的说明如下表: 客户端数据: 函数名:服务端PHP脚本中存在的函数。 函数参数:客户端JavaScript脚本中的变量值。 服务端数据: 函数返回值:执行服务端PHP函数的返回值。 3、序列化与反序列化 为了要传输客户端的变量值和服务端的函数返回值,需要对其进行序列化处理。与之相对应的在传输后还要进行反序列化处理。 JavaScript中的变量的类型:基本类型和JSON类型(普通数组、元对象) PHP中的变量类型:基本类型和数组(普通数组和关联索引数组) PHP语言具有序列化和反序列化函数,而JavaScript语言中没有,因此我们要自己实现它。 由于我们进行JavaScript和PHP之间的数据交换,所以直接把JavaScript变量序列化为PHP的序列化形式。我们实现Js2PhpSerialize函数来完成这个任务。 Js2PhpSerialize:主要是把JSON对象及嵌套调用的JSON对象和基本类型的数据表示为PHP的序列化形式。 服务端的PHP在执行函数后,把结果序列化为JavaScript能理解的形式,以便于eval动态生成变量。我们实现php2JsSerialize函数来完成这个任务。 4、功能实现 我们创建两个类来完成上述功能。一个是客户端的JavaScript类,一个是服务端的PHP类。 文件名:jsrpc.class.js 要实现的功能: A、序列化JavaScript的数据。 B、Ajax传输序列化数据 C、反序列化JavaScript数据。 D、设置回调函数。 文件名:jsrpc.class.php 要实现的功能: A、响应Ajax请求,接收序列化数据。 B、反序列化PHP数据,基本类型和数组。 C、序列化PHP数据为JavaScript数据。 将JavaScript的数据类型转换为PHP可以理解的形式,通过Ajax把转换后的数据传递到服务端,由PHP的eval函数解析为PHP的数据类型。 PHP函数执行后,将执行结果数据转换为JavaScript可以理解的形式,由Ajax的回调函数响应,并由JavaScript的eval函数解析为JavaScript的数据类型。 二、应用示例 代码片段: JavaScript端: <SCRIPT language=javascript src="jsrpc.class.js"></SCRIPT> <SCRIPT language=javascript> var arr = new Array(1,'abc', new Array(3,'xyz'),5); var rpc = new JsRPC(); rpc.call('ajax_server.php', 'checkBook', response, arr); function response(result) { alert(result[1]); } </SCRIPT> PHP端(即文件ajax_server.php): <?php require_once('jsrpc.class.php'); $ar = new JsRPC(); $ar->register('checkBook'); $ar->start(); function checkBook($param) { return $param; } ?> 如上所示,它使用方法与一个叫CPaint的类库相似,只是省去了将数据装到一个对象中的步骤。 三、获取源码 “答案来源于网络,供您参考”

牧明 2019-12-02 02:15:31 0 浏览量 回答数 0

问题

javascript有没有判断页面中是否定义了某个变量或者函数的方法?

a123456678 2019-12-01 20:24:59 900 浏览量 回答数 1

回答

Lambda 表达式 − Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中。方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。Date Time API − 加强对日期与时间的处理。Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。Nashorn, JavaScript 引擎 − Java 8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript应用。经常使用到是 lambda 表达式,但是需要选择使用,可能带来代码比较难维护;Date Time 融合了jodatime,比较常用;其他在一般Java编程中不是经常使用

1315067356609456 2019-12-02 01:55:13 0 浏览量 回答数 0

阿里云高校特惠,助力学生创业梦!0元体验,快速入门云计算!

学生动手场景应用,快速了解并掌握云服务器的各种新奇玩法!

回答

JDK6.0支持JAVA与JAVASCRIPT之间的互相调用,下面的实例将演示几种JAVA代码调用执行JAVASCRIPT代码的方法。   view plaincopy to clipboardprint?   import javax.script.Invocable;   import javax.script.ScriptEngine;   import javax.script.ScriptEngineManager;   import javax.script.ScriptException;      public class Test {       public static void main(String[] args) {    ScriptEngineManager sem = new ScriptEngineManager();    ScriptEngine se = sem.getEngineByName("javascript");    try {    //调用直接JAVASCRIPT语句    se.eval("println('111');");    String tmpstr = "test string";    se.eval(("println('" + tmpstr + "');"));       //调用无参数方法JAVASCRIPT函数    se.eval("function sayHello() {"    + " print('Hello '+strname+'!');return 'my name is '+strname;" + "}");    Invocable invocableEngine = (Invocable) se;    se.put("strname", "testname");    String callbackvalue=(String) invocableEngine.invokeFunction("sayHello");    System.out.println(callbackvalue);       //调用有参数JAVASCRIPT函数    se.eval("function sayHello2(strname2) {"    + " print('Hello '+strname+'!');return 'my name is '+strname2;" + "}");    callbackvalue=(String)invocableEngine.invokeFunction("sayHello2", "testname2");    System.out.println(callbackvalue);       } catch (ScriptException e) {    // TODO Auto-generated catch block    e.printStackTrace();    } catch (NoSuchMethodException e) {    // TODO Auto-generated catch block    e.printStackTrace();    }    }   }   public class Test {    public static void main(String[] args) {    ScriptEngineManager sem = new ScriptEngineManager();    ScriptEngine se = sem.getEngineByName("javascript");    try {    //调用直接JAVASCRIPT语句    se.eval("println('111');");    String tmpstr = "test string";    se.eval(("println('" + tmpstr + "');"));    //调用无参数方法JAVASCRIPT函数    se.eval("function sayHello() {"    + " print('Hello '+strname+'!');return 'my name is '+strname;" + "}");    Invocable invocableEngine = (Invocable) se;    se.put("strname", "testname");    String callbackvalue=(String) invocableEngine.invokeFunction("sayHello");    System.out.println(callbackvalue);       //调用有参数JAVASCRIPT函数    se.eval("function sayHello2(strname2) {"    + " print('Hello '+strname+'!');return 'my name is '+strname2;" + "}");    callbackvalue=(String)invocableEngine.invokeFunction("sayHello2", "testname2");    System.out.println(callbackvalue);       } catch (ScriptException e) {    // TODO Auto-generated catch block    e.printStackTrace();    } catch (NoSuchMethodException e) {    // TODO Auto-generated catch block    e.printStackTrace();    }    }   }   执行后,输出结果如下:  111  test string  Hello testname!my name is testname  Hello testname!my name is testname2   javax.script包为我们提供了不少用得上的类和方法,这样调用增加了前、后台之间的交互性,JAVASCRIPT函数可写在前台页面中,实现内容的变更对后台无影响,不用重新编译、发布即可生效。

蛮大人123 2019-12-02 02:32:00 0 浏览量 回答数 0

问题

【精品问答】前端实战100例之JavaScript篇

珍宝珠 2020-02-14 15:10:56 1456 浏览量 回答数 1

问题

javascript中,console.log()方法怎么用

小旋风柴进 2019-12-01 20:23:11 829 浏览量 回答数 1

回答

一、Lambda表达式 Lambda表达式可以说是Java 8最大的卖点,她将函数式编程引入了Java。Lambda允许把函数作为一个方法的参数,或者把代码看成数据。 一个Lambda表达式可以由用逗号分隔的参数列表、–>符号与函数体三部分表示。例如: Arrays.asList( "p", "k", "u","f", "o", "r","k").forEach( e -> System.out.println( e ) ); 1 Arrays.asList( "p", "k", "u","f", "o", "r","k").forEach( e -> System.out.println( e ) ); 为了使现有函数更好的支持Lambda表达式,Java 8引入了函数式接口的概念。函数式接口就是只有一个方法的普通接口。java.lang.Runnable与java.util.concurrent.Callable是函数式接口最典型的例子。为此,Java 8增加了一种特殊的注解@FunctionalInterface: 1 @FunctionalInterface2 public interface Functional {3 void method();4 }二、接口的默认方法与静态方法 我们可以在接口中定义默认方法,使用default关键字,并提供默认的实现。所有实现这个接口的类都会接受默认方法的实现,除非子类提供的自己的实现。例如: 1 public interface DefaultFunctionInterface {2 default String defaultFunction() {3 return "default function";4 }5 }我们还可以在接口中定义静态方法,使用static关键字,也可以提供实现。例如: 1 public interface StaticFunctionInterface {2 static String staticFunction() {3 return "static function";4 }5 }接口的默认方法和静态方法的引入,其实可以认为引入了C++中抽象类的理念,以后我们再也不用在每个实现类中都写重复的代码了。 三、方法引用 通常与Lambda表达式联合使用,可以直接引用已有Java类或对象的方法。一般有四种不同的方法引用: 构造器引用。语法是Class::new,或者更一般的Class< T >::new,要求构造器方法是没有参数; 静态方法引用。语法是Class::static_method,要求接受一个Class类型的参数; 特定类的任意对象方法引用。它的语法是Class::method。要求方法是没有参数的; 特定对象的方法引用,它的语法是instance::method。要求方法接受一个参数,与3不同的地方在于,3是在列表元素上分别调用方法,而4是在某个对象上调用方法,将列表元素作为参数传入; 四、重复注解 在Java 5中使用注解有一个限制,即相同的注解在同一位置只能声明一次。Java 8引入重复注解,这样相同的注解在同一地方也可以声明多次。重复注解机制本身需要用@Repeatable注解。Java 8在编译器层做了优化,相同注解会以集合的方式保存,因此底层的原理并没有变化。 五、扩展注解的支持 Java 8扩展了注解的上下文,几乎可以为任何东西添加注解,包括局部变量、泛型类、父类与接口的实现,连方法的异常也能添加注解。 六、Optional Java 8引入Optional类来防止空指针异常,Optional类最先是由Google的Guava项目引入的。Optional类实际上是个容器:它可以保存类型T的值,或者保存null。使用Optional类我们就不用显式进行空指针检查了。 七、Stream Stream API是把真正的函数式编程风格引入到Java中。其实简单来说可以把Stream理解为MapReduce,当然Google的MapReduce的灵感也是来自函数式编程。她其实是一连串支持连续、并行聚集操作的元素。从语法上看,也很像linux的管道、或者链式编程,代码写起来简洁明了,非常酷帅! 八、Date/Time API (JSR 310) Java 8新的Date-Time API (JSR 310)受Joda-Time的影响,提供了新的java.time包,可以用来替代 java.util.Date和java.util.Calendar。一般会用到Clock、LocaleDate、LocalTime、LocaleDateTime、ZonedDateTime、Duration这些类,对于时间日期的改进还是非常不错的。 九、JavaScript引擎Nashorn Nashorn允许在JVM上开发运行JavaScript应用,允许Java与JavaScript相互调用。 十、Base64 在Java 8中,Base64编码成为了Java类库的标准。Base64类同时还提供了对URL、MIME友好的编码器与解码器。 除了这十大新特性之外,还有另外的一些新特性: 更好的类型推测机制:Java 8在类型推测方面有了很大的提高,这就使代码更整洁,不需要太多的强制类型转换了。 编译器优化:Java 8将方法的参数名加入了字节码中,这样在运行时通过反射就能获取到参数名,只需要在编译时使用-parameters参数。 并行(parallel)数组:支持对数组进行并行处理,主要是parallelSort()方法,它可以在多核机器上极大提高数组排序的速度。 并发(Concurrency):在新增Stream机制与Lambda的基础之上,加入了一些新方法来支持聚集操作。 Nashorn引擎jjs:基于Nashorn引擎的命令行工具。它接受一些JavaScript源代码为参数,并且执行这些源代码。 类依赖分析器jdeps:可以显示Java类的包级别或类级别的依赖。 JVM的PermGen空间被移除:取代它的是Metaspace(JEP 122)。

auto_answer 2019-12-02 01:55:13 0 浏览量 回答数 0

回答

第一个,a.b()仅仅是调用了b函数,函数里面的this指向a,而a没有c,所以报错.[1](你可以试试在return {b:b};里面加个c看看) 第二个,vare=newd()时,步骤如下:[2] 1,创建一个空object; 2,新object继承d的prototype,即a.b.prototype,c就是从这里进来的; 3,在新object上执行d的constructor,即vard=function(){}里面的function(){}; 4,如果constructor返回一个object,则返回这个object,否则返回1里面新建的object,返回的值赋给e. 于是e.c()就调用了prototype里面的c. 参考: [1]:  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this [2]:  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new Class.prototype.fn=function(){} 很明显,prototype是给类增加一个方法,当然是类的实例对象才能调用这个方法。 a.b(); 这行代码里,a是{b:b},所以实际执行了b函数,b函数里的this.c(),this指向a,而a是没有c方法的,自然会报错。 我明白了,多谢你的解释 引用来自“wuyiw”的评论 第一个,a.b()仅仅是调用了b函数,函数里面的this指向a,而a没有c,所以报错.[1](你可以试试在return {b:b};里面加个c看看) 第二个,vare=newd()时,步骤如下:[2] 1,创建一个空object; 2,新object继承d的prototype,即a.b.prototype,c就是从这里进来的; 3,在新object上执行d的constructor,即vard=function(){}里面的function(){}; 4,如果constructor返回一个object,则返回这个object,否则返回1里面新建的object,返回的值赋给e. 于是e.c()就调用了prototype里面的c. 参考: [1]:  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this [2]:  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new

爱吃鱼的程序员 2020-06-10 10:25:18 0 浏览量 回答数 0

回答

.net是后台语言,需要编译后才能运行。而JavaScript是前端语言。.net不能运行JavaScript的函数,但JavaScript可以通过ajax访问.net的方法。 “答案来源于网络,供您参考” 希望以上信息可以帮到您!

牧明 2019-12-02 02:16:24 0 浏览量 回答数 0

回答

有3种可能的方法可以实现此目的: 在构造函数中进行绑定:在JavaScript类中,默认情况下未绑定方法。同样的事情也适用于定义为类方法的React事件处理程序。通常我们将它们绑定在构造函数中。 class Component extends React.Componenet { constructor(props) { super(props) this.handleClick = this.handleClick.bind(this) } handleClick() { // ... } } 公共类字段语法:如果您不喜欢使用绑定方法,则可以使用公共类字段语法正确地绑定回调。 handleClick = () => { console.log('this is:', this) } {'Click me'} 回调函数中的箭头函数:您可以直接在回调函数中使用箭头函数。 <button ```js onClick={(event) => this.handleClick(event)}> {'Click me'} 注意:如果将回调作为prop传递给子组件,则这些组件可能会进行额外的重新渲染。在这种情况下,最好是去.bind()或公共类字段语法的方法考虑性能。

你的答案 2020-05-07 16:13:39 0 浏览量 回答数 0

回答

JavaScript (ECMAScript) :JavaScript 是脚本语言。JavaScript和ECMAScript通常被人用来表达相同的含义,但是JavaScript并不是这么一点含义,它是由ECMAScript 核心. DOM 文档对象模型. BOM 浏览器对象模型 这三部分组成。浏览器会在读取代码时,逐行地执行脚本代码。而对于传统编程来说,会在执行前对所有代码进行编译。 组成部分包括语法,类型,语句,关键字,保留字,操作符,对象。 其中,文档对象模型(DOM , Document Object Model)是针对XML但是经过拓展用于HTML的应用程序编程接口。DOM把整个页面映射为一个多层节点结构,开发人员借助DOM Api对节点进行操作。可以通过浏览器F12进入开发者模式,查看层级关系。当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。HTML DOM 模型被构造为对象的树。通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。 功能大致上: · JavaScript 能够改变页面中的所有 HTML 元素 · JavaScript 能够改变页面中的所有 HTML 属性 · JavaScript 能够改变页面中的所有 CSS 样式 · JavaScript 能够对页面中的所有事件做出反应 同时,浏览器对象模型(Browser Object Model)使用BOM控制浏览器显示页面意外的部分。 javaScript脚本加载方式 1 通过在网页中加入标记JavaScript的开始和结束,将JavaScript代码放到之间 2 也可以引入一个外部的JavaScript文件,这个JavaScript文件一般以.js作为扩展名 3 原则上,放在之间。但视情况可以放在网页的任何部分 4 一个页面可以有几个,不同部分的方法和变量,可以共享。 javaScript语句开发 (1)对大小写敏感 (2)自动忽略多余的空格 (3)在文本字符串中使用反斜杠对代码行进行换行 (4)单行注释(//)多行注释(/* */) JavaScript 是一个程序语言。语法规则定义了语言结构。 JavaScript 字面量 在编程语言中,一般固定值称为字面量,如 3.14。 数字(Number)字面量 可以是整数或者是小数,或者是科学计数(e)。 字符串(String)字面量 可以使用单引号或双引号: 数组(Array)字面量 定义一个数组: [40, 100, 1, 5, 25, 10] 对象(Object)字面量 定义一个对象: {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"} 函数(Function)字面量 定义一个函数: function myFunction(a, b) { return a * b;} **JavaScript 变量 ** 在编程语言中,变量用于存储数据值。 JavaScript 使用关键字 var 来定义变量, 使用等号来为变量赋值: var x, length x = 5 length = 6 JavaScript 操作符 JavaScript使用 算术运算符 来计算值: (5 + 6) * 10 JavaScript使用赋值运算符给变量赋值: x = 5 y = 6 z = (x + y) * 10 JavaScript语言有多种类型的运算符: JavaScript 语句 在 HTML 中,JavaScript 语句向浏览器发出的命令。 语句是用分号分隔: x = 5 + 6; y = x * 10; JavaScript 关键字 JavaScript 关键字用于标识要执行的操作。 和其他任何编程语言一样,JavaScript 保留了一些关键字为自己所用。 var 关键字告诉浏览器创建一个新的变量: var x = 5 + 6; var y = x * 10; JavaScript 同样保留了一些关键字,这些关键字在当前的语言版本中并没有使用,但在以后 JavaScript 扩展中会用到。 以下是 JavaScript 中最重要的保留字(按字母顺序): JavaScript 注释 不是所有的 JavaScript 语句都是"命令"。双斜杠 // 后的内容将会被浏览器忽略: // 我不会执行 JavaScript 数据类型 JavaScript 有多种数据类型:数字,字符串,数组,对象等等: var length = 16; // Number 通过数字字面量赋值 var points = x * 10; // Number 通过表达式字面量赋值 var lastName = "Johnson"; // String 通过字符串字面量赋值 var cars = ["Saab", "Volvo", "BMW"]; // Array 通过数组字面量赋值 var person = {firstName:"John", lastName:"Doe"}; // Object 通过对象字面量赋值 数据类型的概念 编程语言中,数据类型是一个非常重要的内容。 为了可以操作变量,了解数据类型的概念非常重要。 如果没有使用数据类型,以下实例将无法执行: 16 + "Volvo" 16 加上 "Volvo" 是如何计算呢? 以上会产生一个错误还是输出以下结果呢? "16Volvo" 你可以在浏览器尝试执行以上代码查看效果。 在接下来的章节中你将学到更多关于数据类型的知识。 JavaScript 函数 JavaScript 语句可以写在函数内,函数可以重复引用: 引用一个函数 = 调用函数(执行函数内的语句)。 function myFunction(a, b) { return a * b; // 返回 a 乘以 b 的结果 } JavaScript 字母大小写 JavaScript 对大小写是敏感的。 当编写 JavaScript 语句时,请留意是否关闭大小写切换键。 函数 getElementById 与 getElementbyID 是不同的。 同样,变量 myVariable 与 MyVariable 也是不同的。 JavaScript 字符集 JavaScript 使用 Unicode 字符集。 Unicode 覆盖了所有的字符,包含标点等字符。 三 推荐学习网站 JS具体的语法内容还有很多,可以参考官方API或者学习网站完成掌握,简单易学,推荐网站 菜鸟教程:https://www.runoob.com/js/js-tutorial.html w3cschool:https://www.w3school.com.cn/js/index.asp 四 推荐学习书籍 引用自 https://www.cnblogs.com/xhqq/p/7561384.html 个人觉得不错的,没事可以翻翻的。书籍如下: 《javascript设计模式》,张容铭写的,可能不太适合零基础的,是非常不错的进阶书籍。 《javascript面向对象编程指南》,风格轻松易懂,比较适合初学者,原型那块儿讲得透彻,12种继承方式呢。 《js权威指南》、《js高级程序设计》,这两本书经典是经典,但是太厚,适合把其中任意一章都当成一本书来读。洋洋洒洒,很难一口气看完。比较适合当做参考书。 《你不知道的javascript》狙击js核心细节,闭包、原型、this讲得都还清楚。 《js设计模式与开发实践》js设计模式也是要学的,此书把js的设计模式讲得非常清晰,一点不晦涩,看起来没多少难度。 《正则指引》,分析源码时,如果正则表达式不懂,没法进行下去的。此书相对来说讲得比较清晰。 《基于MVC的JavaScript Web富应用开发》,看完后,基本能写出自己的mvc框架了。是本好书。 《javascript函数式编程》,js是一门函数式语言,此书是函数式编程一个入门,函数是一等公民那是非常重要的。 《js忍者秘籍》,jq作者写的,没有传说中的那么难读,话说就算你看完并理解所有知识点,也不会达到世界高手级别的。因为你还没有做到随心所欲。 《javascript框架设计》,如果初看此书,会觉得此书有罗列代码之嫌。在我看来,此书讲究的是框架的全局观。以上书籍是我认为是成就高手之路上必须看的,也需要反复看。 css相关的书籍,说实话我看得比较少,总共有六七本吧。有两本必须推荐一下: 《css权威指南》,css基础知识点那是讲得非常清楚的。什么层叠优先级、line-height啥的。不是随便一本书都敢叫“权威指南”的。 《css揭秘》,此书我也是不断的看,此书才不屑于全面讲css3各属性呢。css规范文档能讲的,它只会讲你最不在意的。此书解决的47问题,解决思路和解决方案同等重要,很有启发性。以上各书你都可以不买,至少买本此书吧

问问小秘 2020-03-03 09:32:57 0 浏览量 回答数 0

问题

javascript字面量创建对象的方法有没有调用Object构造函数?

小旋风柴进 2019-12-01 20:26:02 912 浏览量 回答数 1

问题

如何禁止执行页面上的JS方法

a123456678 2019-12-01 20:23:07 955 浏览量 回答数 1

回答

使用纯组件使用React.memo进行组件记忆使用shouldComponentUpdate生命周期事件懒加载组件使用React Fragments避免额外标记不要使用内联函数定义避免componentWillMount()中的异步请求在Constructor的早期绑定函数箭头函数与构造函数中的绑定避免使用内联样式属性优化React中的条件渲染不要在render方法中导出数据为组件创建错误边界组件的不可变数据结构使用唯一键迭代事件节流和防抖使用CDN用CSS动画代替JavaScript动画在Web服务器上启用gzip压缩使用Web Workers处理CPU密集任务React组件的服务端渲染 详情:21 个 React 性能优化技巧

前端问答 2019-12-02 03:24:17 0 浏览量 回答数 0

回答

闭包(closure)是javascript的一大难点,也是它的特色。很多高级应用都要依靠闭包来实现。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。要注意:(1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。 (2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

huc_逆天 2019-12-02 03:18:23 0 浏览量 回答数 0

回答

Promise 对象是异步编程的一种解决方案,最早由社区提出。Promises/A+ 规范是 JavaScript Promise 的标准,规定了一个 Promise 所必须具有的特性。 Promise 是一个构造函数,接收一个函数作为参数,返回一个 Promise 实例。一个 Promise 实例有三种状态,分别是 pending、resolved 和 rejected,分别代表了进行中、已成功和已失败。实例的状态只能由 pending 转变 resolved 或者 rejected 状态,并且状态一经改变,就凝固了,无法再被改变了。状态的改变是通过 resolve() 和 reject() 函数来实现的,我们 可以在异步操作结束后调用这两个函数改变 Promise 实例的状态,它的原型上定义了一个 then 方法,使用这个 then 方法可以为两个状态的改变注册回调函数。这个回调函数属于微任务,会在本轮事件循环的末尾执行。

剑曼红尘 2020-04-07 20:57:11 0 浏览量 回答数 0

回答

将json字符串转换为json对象的方法。在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键.特别注意:如果obj本来就是一个JSON对象,那么使用eval()函数转换后(哪怕是多次转换)还是JSON对象,但是使用parseJSON()函数处理后会有问题(抛出语法异常)。二、可以使用toJSONString()或者全局方法JSON.stringify()将JSON对象转化为JSON字符串。注意:上面的几个方法中,除了eval()函数是js自带的之外,其他的几个方法都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个方法都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()方法,则说明您的json包版本太低。

杨冬芳 2019-12-02 03:05:00 0 浏览量 回答数 0

回答

Re请教一个关于javascript的作用域问题 两个文件下载好后,解析的时候都在同一个javascript顶级作用域下面 ,相当于一个js文件放了重复了两遍相同代码,不冲突才怪.... 解决方法是: 把他们的作用域独立开,用匿名函数包起来,因为是操作DOM的,所以要DOM Ready下 给重复的变量,函数改名字 ...我是小菜,等大神来回答

chu-keh 2019-12-01 23:51:25 0 浏览量 回答数 0

问题

Python和JavaScript基本通讯

几许相思几点泪 2019-12-24 21:22:26 8 浏览量 回答数 1

问题

jquery ajax不能上传图片

杨冬芳 2019-12-01 19:57:05 1035 浏览量 回答数 1

回答

如果“当前位置”是指给定页面中的某个点,那么我认为这是不可能的……至少不是纯粹来自Java。暴露给Java的整个WebKit API缺少处理页面内容的任何东西。 如果您可以控制页面内容,并且可以通过页面内Javascript了解这些位置,则可以: 步骤#1:用于WebView#addJavascriptInterface()通过某种recordPosition()方法添加对象,并在适当的地方保存信息 步骤#2:创建调用recordPosition()注入对象的Javascript函数。 然后: 步骤#3a:从Java脚本本身触发该Java脚本功能(例如,基于单击),或者 步骤#3b:调用loadUrl("javascript:...");,将WebView其...替换为Javascript代码,以触发步骤2中的Javascript函数。 恢复这些位置必须以相同的方式工作:让Javascript进行实际的恢复,可能是由Java代码触发的。 请注意,我不知道Java是否可以提供您想要的内容(获取/设置当前位置),因为我不是浏览器中的编码员。

LiuWH 2020-01-20 09:29:16 0 浏览量 回答数 0

问题

JavaScript中Math对象为什么可以调用apply()方法?

云栖技术 2019-12-01 19:39:28 976 浏览量 回答数 1

回答

对于json和JavaScript对象你有点混淆了,上面的json本质上是一个对象,只是创建一个符合json格式的JavaScript对象,而对象没有push方法,push是数组方法,使用push方法会出错:TypeError: Object #<Object> has no method 'push' 对于函数调用也有使用错误,参数的分隔符只有",",而没有":"建议多看一下文档。 给对象插入值,直接赋值就行了。 var json = {"width":"10","height":"10"}; json['long']="10"; 建议:多看文档,调试时把调试窗口打开。

爵霸 2019-12-02 01:58:17 0 浏览量 回答数 0

回答

XSS(跨站脚本攻击)可以用于窃取其他用户的Cookie信息,要避免此类问题,可以采用如下解决方案:1。直接过滤所有的JavaScript脚本;2.转义Html元字符,使用htmlentities、htmlspecialchars等函数;3.系统的扩展函数库提供了XSS安全过滤的remove_xss方法;4.对URL访问的一些系统变量做XSS处理。

落地花开啦 2019-12-02 02:51:14 0 浏览量 回答数 0

回答

一、原型链继承 缺点: 1.引用类型的属性被所有实例共享 2.在创建 Child 的实例时,不能向 Parent 传参 二、借用构造函数(经典继承) 优点: 1.避免了引用类型的属性被所有实例共享 2.可以在 Child 中向 Parent 传参 缺点: 1.方法都在构造函数中定义,每次创建实例都会创建一遍方法。 三、组合继承 优点: 1.融合原型链继承和构造函数的优点,是 JavaScript 中最常用的继承模式。 四、原型式继承 缺点: 1.包含引用类型的属性值始终都会共享相应的值,这点跟原型链继承一样。 五、寄生式继承 缺点: 1.跟借用构造函数模式一样,每次创建对象都会创建一遍方法。 六、寄生组合式继承 优点: 1.这种方式的高效率体现它只调用了一次 Parent 构造函数,并且因此避免了在 Parent.prototype 上面创建不必要的、多余的属性。 2.与此同时,原型链还能保持不变; 3.因此,还能够正常使用 instanceof 和 isPrototypeOf。 开发人员普遍认为寄生组合式继承是引用类型最理想的继承范式

茶什i 2019-12-02 03:18:15 0 浏览量 回答数 0

问题

在javascript中,monkey patching(即给内置对象扩展方法)是一种好的编程习惯吗?

a123456678 2019-12-01 20:14:06 999 浏览量 回答数 1

回答

1.defer属性 浏览器会并行下载 file.js和其它有 defer 属性的script,而不会阻塞页面后续处理。defer属性在IE 4.0中就实现了,超过10多年了!Firefox从 3.5 开始支持defer属性 。 注:所有的defer脚本保证是按顺序依次执行的。 2.async属性 async属性是HTML5新增的。作用和defer类似,但是它将在下载后尽快执行,不能保证脚本会按顺序执行。它们将在onload 事件之前完成。 Firefox3.6、Opera 10.5、IE 9和 最新的Chrome 和 Safari 都支持 async 属性。可以同时使用 async 和 defer,这样IE 4之后的所有IE 都支持异步加载。 3.动态创建DOM方式 (使用的最多) 1 2 3 4 5 6 7 8 9 10 11 12 13 PS: 这里插一句addEventListener() 也是常考的知识点之一: addEventListener() 方法用于向指定元素添加事件句柄。 使用 removeEventListener() 方法来移除 addEventListener() 方法添加的事件句柄。 语法:element.addEventListener(event, function, useCapture) event (必须)字符串,指定事件名。注意: 不要使用 “on” 前缀。 例如,使用 “click” ,而不是使用 “onclick”。 function (必须)指定要事件触发时执行的函数。当事件对象会作为第一个参数传入函数。 事件对象的类型取决于特定的事件。例如, “click” 事件属于 MouseEvent(鼠标事件) 对象。 useCapture (可选)布尔值,指定事件是否在捕获或冒泡阶段执行。【true:事件句柄在捕获阶段执行; false:默认,事件句柄在冒泡阶段执行】 1 2 3 4 5 6 7 8 该实例使用 addEventListener() 方法来向按钮添加点击事件。 点我 效果如图: 4.使用Jquery的getScript()方法 1 2 3 $.getScript("outer.js",function(){//回调函数,成功获取文件后执行的函数 console.log("脚本加载完成") }); 从源码可以看出,这个方法最后还是调用了jQuery.ajax()来请求了js文件的。 5.使用setTimeout延迟方法的加载时间 延迟加载js代码,给网页加载留出时间 1 2 3 4 5 6 7 8 9 10 6.让js最后加载 例如引入外部js脚本文件时,如果放入html的head中,则页面加载前该js脚本就会被加载入页面,而放入body中,则会按照页面从上倒下的加载顺序来运行javascript的代码~~~ 所以我们可以把js外部引入的文件放到页面底部,来让js最后引入,从而加快页面加载速度。 上述方法5,6也会偶尔让你收到Google页面速度测试工具的“延迟加载javascript”警告。所以这里的解决方案将是来自Google帮助页面的推荐方案。 1 2 3 4 5 6 7 8 9 10 11 12 //这些代码应被放置在标签前(接近HTML文件底部) 这段代码意思是等到整个文档加载完后,再加载外部文件“defer.js”。 使用此段代码的步骤: 复制上面代码 粘贴代码到HTML的标签前 (靠近HTML文件底部) 修改“defer.js”为你的外部JS文件名 确保你文件路径是正确的。例如:如果你仅输入“defer.js”,那么“defer.js”文件一定与HTML文件在同一文件夹下。 注意:这段代码直到文档加载完才会加载指定的外部js文件。因此,不应该把那些页面正常加载需要依赖的javascript代码放在这里。而应该将JavaScript代码分成两组。一组是因页面需要而立即加载的javascript代码,另外一组是在页面加载后进行操作的javascript代码(例如添加click事件或其他东西)。这些需等到页面加载后再执行的JavaScript代码,应放在一个外部文件,然后再引进来。

景凌凯 2020-04-03 22:00:38 0 浏览量 回答数 0

问题

请问php里面不能够重载方法吗??报错

爱吃鱼的程序员 2020-06-22 14:45:12 0 浏览量 回答数 1

问题

一个 JavaScript 函数,如果能知道是使用 setTimeout 来调用的?

a123456678 2019-12-01 20:25:03 1197 浏览量 回答数 1

问题

【精品问答】前端开发必懂之JS技术二百问

茶什i 2019-12-01 22:05:04 146 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站