javascript程式碼積累
一、javascript實現繼承
1.基於原型鏈實現繼承
function base(cl,sup,args){
cl.constructor.prototype.__proto__ = sup.prototype;
sup.apply(cl,args);
}
//這種方法比較適用
2.基於屬性和方法複製實現繼承
function base1(cl,sup,args){
var o = {};
var clp = cl.constructor.prototype;
var spp = sup.prototype;
for(var l in clp){
if(clp[l]){
o[l] = 1;
}
}
for(var k in spp){
if(!o[k]){
clp[k] = spp[k];
}
}
sup.apply(cl,args);
}
二、javascript型別判斷
function type(o){
return Number.isNaN(o)?"NaN":Object.prototype.toString.call(o).slice(8,-1);
}
能判斷這些型別
Object
Date
String
Boolean
Number
NaN
Null
Undefined
Error
RegExp
Function
三、javascript物件的深複製
function clone(obj){
if(typeof(obj) != 'object'){
return obj;
}
var cloneOne = {};
cloneOne.__proto__ = obj.constructor.prototype;
for(var prop in obj){
if(obj.hasOwnProperty(prop)){
cloneOne[prop] = clone(obj[prop]);
}
}
return cloneOne;
}
//能完全深複製一個物件,且保證物件的繼承關係
注:請不要用此函式去複製html標籤,因為HTMLElement物件的屬性都是不允許沒有實現Element介面的物件呼叫的。所以這種方法是複製不了的,除非不保持它的繼承關係,純粹複製屬性的值才可以.
四、javascript陣列去重
//物件鍵值對法
function unique3(array){
var n = {},r = [],len = array.length,val,type;
for(var i = 0;i < len;i++){
val = array[i];
type = typeof val;
if(!n[val]){
n[val] = [type];
r.push(val);
}else if(n[val].indexOf(type) < 0){
n[val].push(type);
r.push(val);
}
}
return r;
}
//這種方法是已知最快的陣列去重方法,當佔用空間較大
//優化遍歷陣列法
function unique5(array){
var r = [];
for(var i = 0,l = array.length;i < l;i++){
for(var j = i + 1;j < l;j++){
if(array[i] === array[j]) {
j = ++i;
}
}
r.push(array[i]);
}
return r;
}
//比直接比較下標和比較值速度快點
五、javascript設定get,set屬性
function Persion(){
var name = "dun";
Object.defineProperty(this,"name",{
get:function(){
return "get " + name;
},
set:function(value){
name = value + "set";
}
});
}
var persion = new Persion();
persion.name = "hui";
console.log(persion.name);
六、javascript html元素相關
Object--->EventTarget--->Node--->Element---->HTMLElement--->
1.HTMLParagraphElement
2.HTMLDivElement
......
每個html元素都是HTMLElement的子類的例項
這是谷歌瀏覽器和火狐瀏覽器的實現
相關文章
- 深度學習程式碼積累深度學習
- 功德+N!Python敲擊木魚積累功德程式碼Python
- 小程式開發點滴積累
- PS積累
- lunix 命令積累
- 日常知識積累
- 工作點滴積累
- java問題積累Java
- js積累函式JS函式
- vue 個人積累Vue
- ptorch常用程式碼梯度篇(梯度裁剪、梯度累積、凍結預訓練層等)梯度
- MySQL知識-積累篇MySql
- 常用前端知識積累前端
- 新的GFS累積降水變數-兩種不同的累積降水記錄變數
- java web dev知識積累JavaWebdev
- vue 個人積累(元件,工具)Vue元件
- js基礎知識積累JS
- 個人積累linux 日常命令Linux
- 日積月累之Logback框架框架
- ubuntu點選知識積累Ubuntu
- Python3的使用積累Python
- 程式設計的知識點 (不斷積累,終身程式設計)程式設計
- PDO防注入的一點積累
- 機器學習知識積累機器學習
- 基礎類庫積累--ExeclHelper類
- 測試面試題-積累篇面試題
- 九、Linux/UNIX操作命令積累【rpm】Linux
- [原始碼解析] 深度學習流水線並行GPipe (2) ----- 梯度累積原始碼深度學習並行梯度
- 解累積流圖的真正含義
- 積累工作不會的_2024_04
- 日常積累——彙編檔案編寫
- 0.1、JS-時間處理積累JS
- javaScript程式碼優化JavaScript優化
- 計算圓的面積程式碼
- 20180814,一點點積累,加油!!嘻嘻嘻嘻
- JAVA學習筆記及知識積累Java筆記
- 專案---累積型快照事實表sqlSQL
- 技術積累——C++ 呼叫 python 專案C++Python
- 工作中如何做好技術積累