在JavaScript中这两个例子有什么区别: 先决条件: function SomeBaseClass(){ } SomeBaseClass.prototype = { doThis : function(){ }, doThat : function(){ } } inheritance示例A使用Object.create: function MyClass(){ } MyClass.prototype = Object.create(SomeBaseClass.prototype); inheritance示例B使用新的关键字 function MyClass(){ } MyClass.prototype = new SomeBaseClass(); 这两个例子似乎都是一样的。 你什么时候select一个呢? 还有一个问题:考虑下面的链接(第15行)中的代码,其中对函数自己的构造函数的引用存储在原型中。 为什么这是有用的? https://github.com/mrdoob/three.js/blob/master/src/loaders/ImageLoader.js 摘录(如果你不想打开链接): THREE.ImageLoader.prototype = { constructor: THREE.ImageLoader }
什么JavaScript关键字(函数名称,variables等)保留?
代码给我:A B C 当我点击美国广播公司总是显示我最后一个“伏特加”。 我想要“martin”(对于A),“lindsay”(对于B),“伏特加”(对于C) 请帮我看看我的例子。 myArray = [ { letter: "A", brand: "martin" }, { letter: "B", brand: "lindsay" }, { letter: "C", brand: "vodka" } ]; var list = ''; for (var i = 0; i < myArray.length; i++) { list += "<br>" + myArray[i].letter; new_info = myArray[i].link; (function(new_info) { $(this).click(function(){ //this – […]
我发现了以下陈述: el: '#footer' var todosView = new TodosView({el: $('#footer')}); 为什么把$('#footer')分配给el ? 这真是让我困惑。 我在这里阅读这篇文章,Backbone.js视图中的$ el和el有什么区别? ,仍然困惑。 另外,我读了: view.$el属性相当于$(view.el)和view.$(selector)相当于$(view.el).find(selector) 。 在我们的TodoView示例的render方法中,我们看到this.$el用来设置元素的HTML, this.$()用于查找类“edit”的子元素。 但是,有人说如果你调用$(this.el) ,你只是继续执行jqueryselect器来获得相同的jquery对象。 '$ el'是$(this.el)的caching版本 什么是“caching版本”?
我读过这些问题: 循环中的JavaScript闭包 – 一个简单实用的例子 JavaScriptclosures如何工作? 如何将JSvariables的值(不是引用)传递给函数? 并试图应用他们的解决scheme(以及至less二十二个其他实现),他们都没有工作。 这里是循环的函数: ExecuteQueryWhereQueryAndParamsBothArrays: function (queryArray, paramsArray, idsArray, success, fail, errorLogging) { var hasError = false; $rootScope.syncDownloadCount = 0; $rootScope.duplicateRecordCount = 0; $rootScope.db.transaction(function (tx) { for (var i = 0; i < paramsArray.length; i++) { window.logger.logIt("id: " + idsArray[i]); var query = queryArray[i]; var params = paramsArray[i]; var id = […]
我正在构build一个扩展,以便与Gmail集成,并通过将gmail.js注入页面上下文来与Gmail集成,如下所示: https : //github.com/KartikTalwar/gmail-chrome-extension-boilerplate/blob/master /content.js 这似乎是利用Googleembedded在页面上的一些全局variables的唯一显而易见的方式。 所以现在,我需要回到扩展的一些function。 在正常情况下(通过内容脚本运行),我会向后台脚本发送一条消息,但是在标签本身的上下文中甚至可能发生这种情况?
我明白,JavaScript中的每个函数都是一个一级对象,并且它有一个内部属性[[scope]],它托pipe函数的自由variables的绑定logging。 但是,有两个特例。 Function构造函数创build的函数是否也是闭包? 由Function构造函数创build的函数对象是特殊的,因为它的[[scope]]不能引用其外部函数的词法环境,而只能引用全局上下文。 例如, var a = 1; var fn = (function outer() { var a = 2; var inner = new Function('alert(a); '); return inner; })(); fn(); // will alert 1, not 2. 这是不直观的。 这也被称为封闭? 如果一个内部函数没有任何自由variables,那么当内部函数被创build时,我们可以说是闭包吗? 例如, // This is a useless case only for academic study var fn = (function outer() { […]
您好我想从我的URL使用JavaScript提取查询string,我想做一个不区分大小写的比较查询string名称。 这是我在做什么: var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href); if (!results) { return 0; } return results[1] || 0; 但是上面的代码做了区分大小写的search。 我试过/<regex>/i但它没有帮助。 任何想法如何能够实现?
我有一个由Google地图提供的JavaScript值,我需要将其保存在MySQL数据库中。 其实我有变数 <script> … var lugar = results[0].geometry.location;// this gives me a latitud, longitud value, like: -34.397, 150.644 … </script> 我需要将该variables传递给PHPvariableslugar <? $lugar= ????? ?>
假设我正在使用以下网页: <html> <body> <span id="click">click me</span> <script> var hello = function() { alert('hello'); } document.getElementById('click').addEventListener('click', function(e) { hello(); }); </script> </body> </html> 我的Greasemonkey脚本是: // ==UserScript== // @name My Script // @include http://example.com/hello.html // @version 1 // @grant none // ==/UserScript== window.hello = function() { alert('goodbye'); } 在禁用Greasemonkey脚本的情况下,单击页面上的#click元素将显示“hello”警报。 启用脚本后,单击该元素将显示“再见”警报。 很简单。 来自网页的hello函数正在被Greasemonkey脚本中的函数取代。 现在让我们说我想使用Greasemonkey API。 当我将@grant值设置为“none”以外的有效值(例如// @grant GM_setClipboard […]