Time of Update: 2018-12-08
解決方案,用以下方法載入js: 複製代碼 代碼如下:var loadScript = function(url, callback, charset){ var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); if(charset){ script.charset = charset; } script.src = url; if(!callback){
Time of Update: 2018-12-08
案例1:斷行符號實現Tab跳轉。 響應文字框的onKeyDown事件,window.event.keyCode獲得使用者點擊的keyCode。 (*)keyCode和ASCII不是完全一致,主鍵盤的1和小鍵盤的1的ASCII一樣,但是keyCode不一樣。斷行符號的keyCode為 13,Tab的keyCode為9。 <body onkeydown="if(window.event.keyCode==13){window.event.keyCode=9;}">
Time of Update: 2018-12-08
其實,關於prototype只要幾句話就可以總結: 任何原型都是對象,只有對象有原型 只有Function有prototype屬性,它是這個Function作為構造器時產生對象所繼承的原型。Function的原型和它的prototype屬性無關 對象的原型可以通過非標準的屬性 __proto__ 或ECMAScript5的方法 Object.getPrototypeOf() 訪問。
Time of Update: 2018-12-08
複製代碼 代碼如下:/*! * jLip JavaScript Library v0.1 * * Copyright 2012, Lip2up (lip2up@qq.com) * Just for free use, NO LICENSE */ (function() { function extend(target, props) { for (var m in props) { if (target[m] === undefined) target[m] = props[m]; } }
Time of Update: 2018-12-08
同時,我們知道在物件導向的進階語言中,建立包含私人成員的對象是最基本的特性之一,提供屬性和方法對私人成員進行訪問來隱藏內部的細節。雖然JS也是物件導向的,但沒有內部機制可以直接表明一個成員是公有還是私人的。還是那句話,依靠JS的語言靈活性,我們可以建立公用、私人和特權成員,資訊隱藏是我們要實現的目標,而封裝是我們實現這個目標的方法。我們還是從一個樣本來說明:建立一個類來儲存圖書資料,並實現可以在網頁中顯示這些資料。 1.
Time of Update: 2018-12-08
每種語言都有它特別的地方,對於JavaScript來說,使用var就可以聲明任意類型的變數,這門指令碼語言看起來很簡單,然而想要寫出優雅的代碼卻是需要不斷積累經驗的。本文利列舉了JavaScript初學者應該注意的七個細節,與大家分享。 (1)簡化代碼 JavaScript定義對象和數組非常簡單,我們想要建立一個對象,一般是這樣寫的: 複製代碼 代碼如下:var car = new Object(); car.colour = 'red'; car.wheels = 4;
Time of Update: 2018-12-08
簡介 從本章開始,我將陸續(翻譯、轉載、整理)http://dmitrysoshnikov.com/網站關於ECMAScript標標準理解的好文。 本章我們要講解的是ECMAScript標準裡的執行內容和相關可執行代碼的各種類型。 原始作者:Dmitry A. Soshnikov 原始發布: 2009-06-26 俄文原文:http://dmitrysoshnikov.com/ecmascript/ru-chapter-1-execution-contexts/ 英文翻譯:Dmitry A.
Time of Update: 2018-12-08
就足以說明介面在物件導向的領域中有多重要。但JS卻不像其他物件導向的進階語言(C#,Java,C++等)擁有內建的介面機制,以確定一組對象和另一組對象包含相似的的特性。所幸的是JS擁有強大的靈活性(我在上文已談過),這使得模仿介面特性又變得非常簡單。那麼到底是介面呢? 介面,為一些具有相似行為的類之間(可能為同一種類型,也可能為不同類型)提供統一的方法定義,使這些類之間能夠很好的實現通訊。 那使用介面到底有哪些好處呢?簡單地說,可提高系統相似模組的重用性,使得不同類的通訊更加穩固。一旦實現介面,
Time of Update: 2018-12-08
適合的讀者:有經驗的開發員,專業前端人員。 原作者: Dmitry A. Soshnikov 發布時間: 2010-09-02 原文:http://dmitrysoshnikov.com/ecmascript/javascript-the-core/ 參考1:http://ued.ctrip.com/blog/?p=2795 參考2:http://www.cnblogs.com/ifishing/archive/2010/12/08/1900594.html 主要是綜合了上面2位高手的中文翻譯,
Time of Update: 2018-12-08
前言 本章我們要講解的是S.O.L.I.D五大原則JavaScript語言實現的第3篇,裡氏替換原則LSP(The Liskov Substitution Principle )。 英文原文:http://freshbrewedcode.com/derekgreer/2011/12/31/solid-javascript-the-liskov-substitution-principle/ 複製代碼 開閉原則的描述是: Subtypes must be substitutable for
Time of Update: 2018-12-08
前言 本章我們要講解的是S.O.L.I.D五大原則JavaScript語言實現的第2篇,開閉原則OCP(The Open/Closed Principle )。 開閉原則的描述是: Software entities (classes, modules, functions, etc.) should be open for extension but closed for modification. 軟體實體(類,模組,方法等等)應當對擴充開放,對修改關閉,即軟體實體應當在不修改的前提下擴充。
Time of Update: 2018-12-08
前言 JavaScript 不包含傳統的類繼承模型,而是使用 prototypal 原型模型。 雖然這經常被當作是 JavaScript 的缺點被提及,其實基於原型的繼承模型比傳統的類繼承還要強大。實現傳統的類繼承模型是很簡單,但是實現 JavaScript 中的原型繼承則要困難的多。 由於 JavaScript 是唯一一個被廣泛使用的基於原型繼承的語言,所以理解兩種繼承模式的差異是需要一定時間的,今天我們就來瞭解一下原型和原型鏈。 原型
Time of Update: 2018-12-08
前言 大家學JavaScript的時候,經常遇到自執行匿名函數的代碼,今天我們主要就來想想說一下自執行。 在詳細瞭解這個之前,我們來談瞭解一下“自執行”這個叫法,本文對這個功能的叫法也不一定完全對,主要是看個人如何理解,因為有的人說立即調用,有的人說自動執行,所以你完全可以按照你自己的理解來取一個名字,不過我聽很多人都叫它為“自執行”,但作者後面說了很多,來說服大家稱呼為“立即調用的函數運算式”。
Time of Update: 2018-12-08
簡介 Module模式是JavaScript編程中一個非常通用的模式,一般情況下,大家都知道基本用法,本文嘗試著給大家更多該模式的進階使用方式。 首先我們來看看Module模式的基本特徵: 模組化,可重用 封裝了變數和function,和全域的namaspace不接觸,松耦合 只暴露可用public的方法,其它私人方法全部隱藏 關於Module模式,最早是由YUI的成員Eric
Time of Update: 2018-12-08
也就是說,移到對象的子物件上,也算onmouseout了。但這往往會達不到我們想要的預期效果。這是由於javascript自身的冒泡特性導致的(即在子項目上觸發了事件,並冒泡到了父元素-堆棧後進先出演算法)。今天在網上搜了一下,找了以下的解決辦法(相容IE和Firefox)。 在IE下解決問題很簡單,用onMouseEnter、onMouseLeave來代替onMouseOver、onMouseOut就行了,他們的作用基本相同,但前者不會發生冒泡(如果用
Time of Update: 2018-12-08
第一個階段: 複製代碼 代碼如下:function A(){ this.funB = function(){ alert('A:funB'); }; } A.prototype = { funA:function(){ alert('A:funA'); } }; function B(){ } function extend(sub,parent){ sub.prototype = new parent(); sub.prototype.constructor = sub; }
Time of Update: 2018-12-08
要在二維空間類比出三維的效果,就需要把三維的座標轉換成二維座標。一個最基本依據是:東西越遠,看到大小就越小,座標越往消失點靠攏。 透視公式: scale = fl / (fl + z); scale是大小的比例值,0.0到1.0之間,fl是觀察點到成像面的距離,通常這個值是固定,z就是物件的三維空間中的z軸。
Time of Update: 2018-12-08
JavaScript面試題要求:以下題目必須從一至四題中,選出三道題,使用原生代碼實現,不可使 用任何架構,第五題為選作題。 一、 在頁面的固定地區內實現圖片的展示 1. 每點擊一次右箭頭,圖片地區向左滾動出一張圖片,反之相同; 2. 當發現圖片滾動到末尾時,響應的箭頭變成不可點擊狀態; 3. 滑鼠在圖片地區內滑動滾輪,圖片會隨著滑鼠滾輪的方向進行響應的滾動; 二、 用 js、html、css實現一個彈出提示控制項: 1. 分別實作類別似於系統的
Time of Update: 2018-12-08
javaScript的類型函數(如Number/String/Boolean/Array/Date/Obejct等)都是繼承於 Function.prototype,所以給Function.prototype增加方法,同時也會影響到由它衍生的下層類型函數。如: 複製代碼 代碼如下:Function.prototype.addMethod=function(methodName,func){ if(!this[methodName]){
Time of Update: 2018-12-08
JavaScript缺少塊級範圍,沒有private修飾符,但它具有函數範圍。範圍的好處是內建函式可以訪問它們的外部函數的參數和變數(除了this和argument。內部中的函數中的this指向全域對象,argument指向內建函式的函數參數)。我們可以利用這種屬性來類比物件導向中的私人屬性。 複製代碼 代碼如下:var myObject=function(value){ var value=value || 0; return{ increment:function(num){ value+=