javascript手寫,js手寫代碼

【前端面試:手寫js系列】flat---數組扁平化

數組扁平化定義:在前端項目開發過程中,偶爾會出現層疊數據結構的數組,需要把多層數組轉換為一級數組(即提取嵌套數組元素最終合并為一個數組),使其內容合并并且展開。

成都創新互聯服務項目包括固鎮網站建設、固鎮網站制作、固鎮網頁制作以及固鎮網絡營銷策劃等。多年來,我們專注于互聯網行業,利用自身積累的技術優勢、行業經驗、深度合作伙伴關系等,向廣大中小型企業、政府機構等提供互聯網行業的解決方案,固鎮網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到固鎮省份的部分城市,未來相信會繼續擴大服務區域并繼續獲得客戶的支持與信任!

遍歷數組的方案:

for循環

for...of

for...in

forEach()

entries()

keys()

values()

reduce()

map()

判斷元素是否是數組的方案:

instanceof

constructor

object.prototype.toString.call

isArray

將數組元素進行展開一層的方案:

擴展運算法 + concat(concat() 方法用于合并兩個或多個數組,在拼接的過程中加上擴展運算符會展開一層數組)

concat + apply(主要是利用 apply 在綁定作用域時,傳入的第二個參數是一個數組或者類數組對象,其中的數組元素將作為單獨的參數傳給 func 函數。也就是在調用 apply 函數的過程中,會將傳入的數組一個一個的傳入到要執行的函數中,也就是相當對數組進行了一層的展開。)

toString + split(不推薦使用 toString + split 方法,因為操作字符串是很危險的事情,如果數組中的元素所有都是數字的話,toString + split 是可行的,并且是一步搞定。)

最終手寫的flat()方法為:

參考博客如下,注明一下出處,感謝大神們,希望自己可以多多練習,多多回顧:

三元博客

JS數組reduce()方法詳解及高級技巧

數組flat方法實現

javascript,移動劃過超鏈接鼠標變手型

用css控制鼠標樣式的語法如下:

span style="cursor:*"文本或其它頁面元素/span

把 * 換成如下15個效果的一種:

下面是對這15種效果的解釋。移動鼠標到解釋上面,看看你的鼠標起了什么變化吧!

hand是手型

pointer也是手型,這里推薦使用這種,因為這可以在多種瀏覽器下使用。

crosshair是十字型

text是移動到文本上的那種效果

wait是等待的那種效果

default是默認效果

help是問號

e-resize是向右的箭頭

ne-resize是向右上的箭頭

n-resize是向上的箭頭

nw-resize是向左上的箭頭

w-resize是向左的箭頭

sw-resize是左下的箭頭

s-resize是向下的箭頭

se-resize是向右下的箭頭

auto是由系統自動給出效果

原生JS是自己手寫的JS嗎?

原生js就是使用javascript來進行一系列的開發,

非原生就是使用了js框架,像jq等就不是原生的,它是js的封裝。

能發一下手寫輸入的JS代碼給我嗎

給你JS,這個是用在opera下的手寫輸入,按住ctrl+鼠標左鍵呼出

——————————————————————————————

// ==UserScript==

// ==/UserScript==

SWFObject = function($) {

this.cfg = $;

this.swfId = $.fid;

this.asObjects = {};

this.onLoadInit = null;

SWFObject.instances[this.swfId] = this

};

SWFObject.prototype.load = function() {

Utils.f(this.cfg)

};

SWFObject.prototype.getASObject = function($) {

return this.asObjects[$.asoId]

};

SWFObject.prototype.registerASObject = function(A) {

var _ = A.asoId,

$ = this.swfId;

return this.asObjects[_] = new ASObject({

asoId: _,

swfId: $

})

};

SWFObject.prototype.getASObjectProperty = function($) {

if (this.swf == null) this.swf = Utils.g(this.swfId);

return this.swf.getASObjectProperty($)

};

SWFObject.prototype.setASObjectProperty = function($) {

if (this.swf == null) this.swf = Utils.g(this.swfId);

this.swf.setASObjectProperty($)

};

SWFObject.prototype.callASObjectMethod = function($) {

if (this.swf == null) this.swf = Utils.g(this.swfId);

return this.swf.callASObjectMethod($)

};

SWFObject.instances = {};

SWFObject.getSWFObject = function($) {

return SWFObject.instances[$.swfId]

};

SWFObject.dispatchASObjectEvent = function(B) {

var _ = B.swfId,

A = B.asoId,

F = B.type,

E = B.data,

C = SWFObject.getSWFObject({

swfId: _

}),

$ = (A == undefined) ? C: C.getASObject({

asoId: A

}),

D = "on" + F.substr(0, 1).toUpperCase() + F.substr(1);

if ($[D] != null) $[D](E)

};

SWFObject.registerASObject = function(A) {

var $ = A.swfId,

_ = A.asoId,

B = SWFObject.getSWFObject(A);

B.registerASObject(A)

};

ASObject = function($) {

this.swfId = $.swfId;

this.asoId = $.asoId;

this.swfObject = SWFObject.getSWFObject($);

if (ASObject.instances[this.swfId] == null) ASObject.instances[this.swfId] = {};

ASObject.instances[this.swfId][this.asoId] = this

};

ASObject.prototype.get = function($) {

return this.swfObject.getASObjectProperty({

asoId: this.asoId,

property: $

})

};

ASObject.prototype.set = function(_, $) {

this.swfObject.setASObjectProperty({

asoId: this.asoId,

property: _,

value: $

})

};

ASObject.prototype.call = function($, _) {

return this.swfObject.callASObjectMethod({

asoId: this.asoId,

method: $,

parameters: _

})

};

ASObject.instances = {};

Utils = {

g: function($) {

return document.getElementById($)

},

f: function(_) {

var $ = 'embed id="#{fid}" name="#{fid}" src="#{movie}" flashVars="#{flashVars}" width="#{width}" height="#{height}" align="#{align}" type="application/x-shockwave-flash" pluginspage="" wmode="#{wmode}" scale="#{scale}" salign="#{salign}" allownetworking="#{allownetworking}" allowscriptaccess="#{allowscriptaccess}" /',

A = 'object id="#{fid}" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="#{width}" height="#{height}" align="#{align}"param name="movie" value="#{movie}" /param name="flashVars" value="#{flashVars}" /param name="wmode" value="#{wmode}" /param name="scale" value="#{scale}" /param name="salign" value="#{salign}" /param name="allownetworking" value="#{allownetworking}" /param name="allowscriptaccess" value="#{allowscriptaccess}" //object';

this.g(_.cid).innerHTML = this.fm(this.b.isIE ? A: $, _)

},

fm: function($, _) {

if (arguments.length) if (typeof(_) == "object") $ = $.replace(/#\{([^\{\}]+)\}/g,

function(A, B) {

var $ = _[B];

if (typeof $ == "function") $ = $(B);

return typeof($) == "undefined" ? "": $

});

else if (typeof(_) != "undefined") for (var A = arguments.length - 2; A -1; A--) $ = $.replace(new RegExp("#\\{" + A + "\\}", "g"), arguments[A + 1]);

return $

},

b: {

isIE: /msie/i.test(navigator.userAgent),

isFF: /firefox/i.test(navigator.userAgent),

isMaxthon: (function() {

var $ = false;

try {

$ = external.max_version

} catch(_) {}

return $

})()

},

mo: function() {

var $ = {},

B = arguments.length;

for (var C = 0; C B; C++) {

var A = arguments[C];

for (var _ in A) {

if ($[_] != null) continue;

$[_] = arguments[C][_]

}

}

return $

}

};

HWR = {

loaded: false

};

HWR.load = function(E, C, D) {

HWR.tid = C;

var $ = D ? ("serviceUrl=" + D) : "",

B = {

cid: E,

fid: E + "_flash",

width: 410,

height: 290,

movie: "",

align: "middle",

salign: "lt",

wmode: "window",

scale: "noscale",

allowscriptaccess: "always",

allownetworking: "all",

flashVars: $

},

A = new SWFObject(B);

HWR.so = A;

var _;

A.onLoadInit = function($) {

HWR.ao = _ = A.asObjects.handWrite;

_.onCloseClick = function($) {

HWR._onCloseClick()

};

_.onCharSelect = function($) {

HWR._onCharSelect($["char"])

}

};

A.load()

};

HWR._onCharSelect = function(A) {

var $ = HWR.tid;

var G = $.selectionStart;

var H = $.selectionEnd;

$.value = $.value.substring(0,G) + A + $.value.substring(H,$.value.length);

$.selectionStart = G + A.length;

$.selectionEnd = G + A.length;

};

HWR._onCloseClick = function() {

if (HWR.onCloseClick) HWR.onCloseClick()

};

HWR.onCloseClick = null;

HWR.clear = function() {

HWR.ao.call("clear", [])

};

function getFlashVersion() {

var B = navigator;

if (B.plugins B.mimeTypes.length) {

var A = B.plugins["Shockwave Flash"];

if (A A.description) return A.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s)+r/, ".") + ".0"

} else if (window.ActiveXObject !window.opera) for (var C = 10; C = 2; C--) {

try {

var _ = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + C);

if (_) {

return C + ".0.0";

break

}

} catch($) {}

}

return "0"

}

function addStyle(A, $) {

var _ = document.styleSheets[0];

if (_.addRule) _.addRule(A, $);

else if (_.insertRule) _.insertRule(A + " { " + $ + " }", _.cssRules.length)

}

function penControl() {

var $ = parseInt(getFlashVersion());

if ($ 9) addStyle("#penControl", "display:none")

}

function stopClosePen($) {

$ = $ || window.event;

if ($.stopPropagation) $.stopPropagation();

else $.cancelBubble = true

}

var enablePen = false;

function openPen($) {

if (!enablePen) {

var A = document.getElementById(HWR.so.cfg.cid);

A.className = "hwr_visible_ujs";

enablePen = true

}

$ = $ || event;

var _ = $.target || $.srcElement;

_.blur();

stopClosePen($)

}

HWR.onCloseClick = function() {

HWR.clear();

var _ = document.getElementById(HWR.so.cfg.cid);

_.className = "hwr_hidden_ujs";

enablePen = false

};

function closePen($) {

var B = document.getElementById(HWR.so.cfg.cid);

$ = $ || event;

var A = $.target || $.srcElement;

if (enablePen) {

HWR.clear();

B.className = "hwr_hidden_ujs";

enablePen = false

}

}

function findPos(obj) {

var curleft = curtop = 0;

do {

curleft += obj.offsetLeft;

curtop += obj.offsetTop;

} while (obj = obj.offsetParent);

return [curleft, curtop];

}

function scrollDist() {

var html = document.getElementsByTagName('html')[0];

if (html.scrollTop document.documentElement.scrollTop) {

return [html.scrollLeft, html.scrollTop];

} else if (html.scrollTop || document.documentElement.scrollTop) {

return [html.scrollLeft + document.documentElement.scrollLeft, html.scrollTop + document.documentElement.scrollTop];

} else if (document.body.scrollTop)

return [document.body.scrollLeft, document.body.scrollTop];

return [0, 0];

}

function innerDimensions() {

if (self.innerHeight) {

return [self.innerWidth, self.innerHeight];

} else if (document.documentElement document.documentElement.clientHeight) {

return [document.documentElement.clientWidth, document.documentElement.clientHeight];

} else if (document.body)

return [document.body.clientWidth, document.body.clientHeight];

return [0, 0];

}

document.addEventListener('DOMContentLoaded',

function() {

hwrcss = '#hwr_div_ujs{position:absolute;}.hwr_hidden_ujs{display:none;}.hwr_visible_ujs{display:block;}';

var hwrstyle = document.createElement('style');

hwrstyle.setAttribute('type', 'text/css');

hwrstyle.textContent = hwrcss;

document.getElementsByTagName('head')[0].appendChild(hwrstyle);

hwrdiv = document.createElement('div');

hwrdiv.id = "hwr_div_ujs";

hwrdiv.className = "hwr_hidden_ujs";

document.body.appendChild(hwrdiv);

},

false);

document.documentElement.addEventListener('click',

function(e) {

if (e.ctrlKey !e.shiftKey !e.altKey) {

if (e.target.nodeName == "TEXTAREA" || e.target.type == "text" || e.target.type == "password") {

var tPos = findPos(e.target), wDim = innerDimensions(), sDis = scrollDist();

if (tPos[1] + 293 + e.target.offsetHeight - sDis[1] - wDim[1] 0) {

hwr_div_ujs.style.top = tPos[1] - 293 + "px";

} else {

hwr_div_ujs.style.top = tPos[1] + e.target.offsetHeight + 3 + "px";

}

hwr_div_ujs.style.left = Math.max(0, Math.min(tPos[0], wDim[0] - 430)) + "px";

hwr_div_ujs.className = "hwr_visible_ujs";

penControl();

HWR.load("hwr_div_ujs", e.target, "");

}

} else {

hwr_div_ujs.className = "hwr_hidden_ujs";

}

},

false);

Javascript的onblur事件如何手寫

document.getElementsById("文本框id").onblur=方法名如:=doit;//方法名不要加();把這個寫到onload事件中,

function doit()

{

}

本文標題:javascript手寫,js手寫代碼
文章地址:http://m.kartarina.com/article34/dseeppe.html

成都網站建設公司_創新互聯,為您提供網站排名電子商務品牌網站設計Google微信公眾號網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都app開發公司
主站蜘蛛池模板: 中文无码亚洲精品字幕| 国产精品无码午夜福利| 亚洲av日韩av无码| 久久精品无码一区二区无码| 精品高潮呻吟99av无码视频| 无码AⅤ精品一区二区三区| 中文精品无码中文字幕无码专区| 亚洲AV永久青草无码精品| 免费A级毛片无码免费视| 国产成人无码久久久精品一| 久久久久久久久无码精品亚洲日韩| 亚洲成AV人片在线观看无码 | 久久久久亚洲AV无码麻豆| 高清无码一区二区在线观看吞精| 亚洲精品色午夜无码专区日韩| 男人av无码天堂| 久久无码人妻一区二区三区 | 久久av高潮av无码av喷吹| 亚洲精品无码av中文字幕| 无码国产乱人伦偷精品视频| 国产成人无码免费网站| 国产色无码精品视频国产| 无码精品A∨在线观看十八禁| 国产成人A人亚洲精品无码| 在线精品自拍无码| 日韩精品无码免费专区午夜不卡| 亚洲av永久中文无码精品综合| 国产精品视频一区二区三区无码| 国产在线无码精品无码| 国产av无码专区亚洲av毛片搜| 亚洲av无码一区二区三区在线播放| 无码国产精成人午夜视频一区二区| 九九久久精品无码专区| 欧日韩国产无码专区| 亚洲AV无码成人网站在线观看 | 精品无码人妻一区二区三区| 无码人妻黑人中文字幕| 亚洲AV无码不卡在线播放| 国产精品无码无在线观看| 无码国产精品一区二区免费式芒果 | 亚洲国产av高清无码|