Time of Update: 2018-12-03
JavaScriptRegexvar str = "abc";str = str.replace(/a|b/g,'A');用兩個斜杠括起來的寫法是Regex, 就像用引號括起來是字串, 這個Regex的意思是把字串裡的a或b替換成大寫字母A. 後面斜杠後面的g是全域匹配的意思 如果沒有這個g, 則只替換str字串第一個匹配. 因為符號|是或的意思, 所以如果想尋找字元"|", 應該在前面加上反斜線, 例如str.replace(/\|/g,"A")將會把str的字元"|"全部換成大寫的"A".
Time of Update: 2018-12-03
嵌套的函數(範圍鏈)當你進行函數的嵌套時,要注意實際上範圍鏈是發生變化的,這點可能看起來不太直觀。你可把下面的代碼置入firebug監視值的變化。 var testvar = 'window屬性';var o1 = {testvar: '1', fun: function() {alert('o1: '+this.testvar+'<<');}};var o2 = {testvar:'2', fun:function() {alert('o2: '+this.testvar);}};
Time of Update: 2018-12-03
轉載自:Javascript擷取頁面的各種座標匯總 - 2012-06-17
Time of Update: 2018-12-03
在JS中,數值、布爾值、null和undefined屬於基本類型,而對象、數組和函數屬於參考型別。該博文要解決的兩個問題是:當A引用B後,A與B的關係是:== 、===,還是其它。當A引用B後,B被重新導向後,A是保持原引用,還是跟隨B的新指向。/** * Filename: AppointTest.js * Description: This file is use to find out how a appiont work. * Author: 獵空de代碼 * Date: 2012/3/
Time of Update: 2018-12-03
我們知道,父類中的屬性有this、static和prototype三種。我們常用的繼承方式有兩種:原型繼承:可以把父類的prototype屬性全部繼承下來對象冒充:可以將父類的this屬性繼承下來,再配合for...in迴圈,可以將父類的static屬性也繼承下來將這兩種方式綜合使用,並在此基礎上,使用delete刪除不需要的屬性,以及通過重寫方法來覆蓋父屬性,以達到完美繼承的效果。/** * Filename: PrefectExtend.js * Description:
Time of Update: 2018-12-03
以下代碼,定義了一個類MailRoom,並預設含有"gust"和"mail"兩個事件。實現了:① 添加事件② 添加事件的響應函數③ 觸發事件④ 移除事件的單個響應函數最終,用一個執行個體mailRoom驗證了MailRoom的功能。/** * Filename: Events.js * Description: This file is user to simulate a event of javascript. * Author: 獵空de代碼 * Date: 2012/2/27 *//**
Time of Update: 2018-12-03
利用Array的sort方法,對Array進行排序 (Array裡面放的是對象而不是字串)。寫了一個sample程式。 使用了jquery做了一下頁面的處理,亂七八糟一大堆,其實真正有用的代碼也就那麼幾句話。這篇文章沒什麼技術含量,僅僅是自己做一個實驗,並留作備忘。(程式是可以跑得,只要引入一個jquery-1.6.2.js的包就可以了。)而且css寫的也稍微有點兒亂,這個大家看看就可以了,css不太值得借鑒! ^ - ^<!DOCTYPE html> <html>
Time of Update: 2018-12-03
原文:Model-View-Controller (MVC) with JavaScript作者:Alex@Net譯文:JavaScript 的 MVC 模式譯者:justjavac本文介紹了模型-視圖-控制器模式在 JavaScript 中的實現。我喜歡 JavaScript,因為它是在世界上最靈活的語言之一。 在 JavaScript 中,程式員可以根據自己的口味選擇編程風格:面向過程或物件導向。 如果你是一個重口味,JavaScript 一樣可以應付自如: 面向過程,物件導向,面向方面,
Time of Update: 2018-12-03
在 stackoverflow 上有人提問:arrays - Why does [1,2] + [3,4] = "1,23,4" in JavaScript?問題我想將一個數組追加到另一個數組的後面,於是我在 firebug 編寫如下代碼:[1,2] + [3,4]但是,出乎意料,它卻輸出了:"1,23,4"而沒有輸出我期望的:[1,2,3,4]這是怎麼回事呢?為什麼 [1,2] + [3,4] 不等於 [1,2,3,4]?類似問題還有:為什麼 ++[[]][+[]]+[+[]] =
Time of Update: 2018-12-03
原文:JavaScript quirk 1: implicit conversion of values譯文:「譯」JavaScript 的怪癖 1:隱式類型轉換譯者:justjavac零:提要[此貼子是 javascript 的 12 個怪癖(quirks) 系列的第一篇。]JavaScript 是非常寬容的,「來者不拒」,不在乎什麼類型。 例如,它如果想要接受數字,它並不拒絕其他類型的值,而是試圖把它們轉換成數字:> '5' - '2'3> '5' *
Time of Update: 2018-12-03
原文:Enforcing toString()譯文:javascript 中強制執行 toString()譯者:singleseekerJavascript通常會根據方法或運算子的需要而自動把值轉成所需的類型,這可能導致各種錯誤。 Brian McKenna (@puffnfresh) suggests 提供了下列測試代碼:Object.prototype.valueOf = function () { throw new Error('Use an explicit toString')
Time of Update: 2018-12-03
為我的部落格做了一個很有 geek 風格的關於頁面。運行下面 javascript 代碼,可以看到我的資訊。 (+[[]+(1<<1<<1<<1)+(1^1<<1)+(1<<1>>1)+(-~1<<1<<1)+(1.1>>1.1)+(11>>>1)])[[(!!/-/+{})[111^111]+[[]+{}][!1&.1][1|1>>1|1]]+([1
Time of Update: 2018-12-03
說到JavaScript調試,首先想到的是Firefox的firebug(chrome的DeveloperTools的調試器也非常不錯)其實微軟自己的調試器,我覺得就很好,更適合使用VisualStudio的開發人員的調試習慣!我知道的方法有兩個:使用VisualStudio,使用IE DeveloperTools。本文主要介紹IE8 Developer Tools。先看一個具體案例:eval(function(p,a,c,k,e,d){e=function(c){return
Time of Update: 2018-12-03
V8 JavaScript Engine 的文檔非常少,我只找到兩篇:1. 官方的Embedder's Guide:http://code.google.com/apis/v8/embed.html 這裡是翻譯:http://blog.csdn.net/ffr225/archive/2010/08/13/5809766.aspx2. CodeProject 上的一篇Using V8 - Google's Chrome JavaScript Virtual Machine
Time of Update: 2018-12-03
第一個V8程式一個官方的hello world,http://code.google.com/apis/v8/get_started.html#include using namespace v8;int main(int argc, char* argv[]) { // Create a stack-allocated handle scope. HandleScope handle_scope; // Create a new context. Persistent&
Time of Update: 2018-12-03
Handle,控制代碼V8裡有兩種控制代碼:1. Local handles:本地控制代碼,本地控制代碼在棧上,並且當指定的解構函式被調用時刪除。這些控制代碼的存留時間由控制代碼範圍決定;控制代碼範圍經常在一個函數的開始的時候被建立,函數結束的時候被刪除。類Local 產生的本地控制代碼同樣可以被儲存在父類Handle 聲明的控制代碼裡。2. Persistent handles:持久控制代碼,持久控制代碼並不在棧上分配,並且只有你指定移除它們時才被刪除。一個持久的控制代碼通過
Time of Update: 2018-12-03
模板就是JavaScript 函數和對象在一個context中的藍圖。V8有兩種模板:1.Function templates:函數模板,一個獨立函數的藍圖。將一個 C++ 回呼函數同一個函數模板關聯起來,當 JavaScript 函數執行個體被調用的時候它將被調用。2.Object templates:對象模板,每個函數模板都有一個關聯的對象模板。這是用來配置通過用這個函數作為建構函式建立的對象。 你可以關聯兩種 C++ 回呼函數到對象模板上:
Time of Update: 2018-12-03
Prototype對該對象的對象原型的引用。對於所有的對象,它預設返回 Object 對象的一個執行個體。<html><mce:script type="text/javascript"><!--Object.prototype.test = "prototype.test";var obj = new Object();obj.test = "test";alert(obj.test);//testvar obj2 = new
Time of Update: 2018-12-03
二 使用V8 1. 使用靜態庫版本,必須引入winmm.lib和ws2_32.lib#pragma comment(lib,"winmm.lib")#pragma comment(lib,"ws2_32.lib")#pragma comment(lib,"libv8-vc90-mt.lib")否則會得到類似下面的錯誤:error LNK2019: unresolved external symbol __imp__timeGetTime@0 referenced in function
Time of Update: 2018-12-03
編譯通過了之前的hello world程式之後,忍不住想實際運用一下V8,V8 JavaScript Engine 做為一款強大的JavaScript解析引擎,到底能為我們提供什麼樣的功能呢? 再來仔細看一下hello world程式: ...... // Create a string containing the JavaScript source code. Handle<String> source = String::New("'Hello' + '