亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

解析Javascript中難以理解的11個問題

2019-11-20 21:30:21
字體:
來源:轉載
供稿:網友

1.原始值與引用值

原始值存放在棧里, 引用值存放在堆里. 如程序:

復制代碼 代碼如下:

function Person(id,name,age){
 this.id = id;
 this.name = name;
 this.age = age;
}

var num = 10;
var bol = true;
var str = "abc";
var obj = new Object();
var arr = ['a','b','c'];
var person = new Person(100,"笨蛋的座右銘",25);

2.undefined和null

undefined: 變量未定義; 是Undefined類型的專屬值;

null:引用未分配; 是Null類型的專屬值.

typeof(undefined) == undefined;
typeof(null) == object;
undefined==null;
undefined!==null;
null instanceof Object == false;
undefined instanceof Object == false;

雖然有Undefined和Null類型, 但是通過下面的例子說明這兩個類型是不可見的, 也就是說我們只能使用他們的值:

alert(undefined instanceof Undefined);
alert(null instanceof Null);

3.偽數組

特點:
1) 具有length屬性;

2) 像數組一樣按索引順序存取數據;

3) 不具備數組特有的操作數據的方法如push, pop, slice...

偽數組都可以通過Array.prototype.slice轉換為真正的數組:

var faceArray = {0: 'a', 1: 'b', length: 2}//標準的偽數組;

var realArray = Array.prototype.slice.call(fakeArray);

js中的偽數組:arguments,?。睿飀e.childNodes, document.getElementsByTagName()...

IE中的問題 : IE中node.childNodes是不能用slice轉化的.

Jquery中的偽數組 : Jquery本身就是一個偽數組:

alert($('.class1').length); alert($('.class1').[0].tagName);

4.關于簡單類型的字面量

var a = 1; b = true, c = "ccc";

字面量看起來有類型

alert(typeof a);//number
alert(typeof b);//boolean
alert(typeof c);//string

但是通過instanceof卻測不出來

alert(a instanceof Number)//false
alert(a instanceof Object)//false
alert(b instanceof Boolean)//false
alert(b instanceof Object)//false
alert(c instanceof String)//false
alert(c instanceof Object)//false

5.函數的prototype屬性和對象實例的內部prototype屬性

每個function(構造函數)都有一個prototype屬性, 每個對象實例都有一個不可見的(mozilla把它公開了, 可以通過__proto__來取得)內部的prototype屬性, 它指向構造函數的prototype屬性. prototype還可以有它自己的prototype屬性, 這構成了prototype鏈,  Object是最頂的對象, 所以所有的prototype鏈最終會指向Object.prototype. 當訪問對象實例的屬性/方法的時候, 從對象實例自己開始搜索, 若果搜索不到, 沿著prototype鏈向上搜索, 直到Object.prototype.prototype == null 為止.

6.構造函數的一個小秘密

復制代碼 代碼如下:

var s = new function(){return "sss"};
alert(s);//[object Object]
s = new function(){return new String("sss")};
alert(s);//sss

關于這段代碼的解釋:

只要 new 表達式之后的 constructor 返回(return)一個引用對象(數組,對象,函數等),都將覆蓋new創建的匿名對象,如果返回(return)一個原始類型(無 return 時其實為 return 原始類型 undefined),那么就返回 new 創建的匿名對象.


7.對象的創建的過程

復制代碼 代碼如下:

function Person(name){
        this.name = name;   
}
Person.prototype = {
        getName: function(){return this.name}   
};

var p = new Person('zhangsan');


解密p的創建過程:

◦創建一個build-in object對象obj并初始化;

◦將p的內部[[Prototype]]指向Person.prototype;

◦將p作為this,使用arguments參數調用Person的內部[[Call]]方法, 即執行Person函數體, 并返回返回值, 如果沒有return, 則返回undefined;

◦如果前一步返回的是Object類型, 則返回這個值給p, 否則返回obj.

8.對象的自有屬性和繼承屬性

復制代碼 代碼如下:

function Person(name){
        this.name = name;   
}
Person.prototype = {
        type: 'human',
        getName: function(){return this.name}   
};
var p = new Person('zhangsan');
alert(p.hasOwnProperty('type'));//false
p.type = 'ren';
alert(p.hasOwnProperty('type'));//true

運行結果很明確,對象的屬性無法修改其原型中的同名屬性,而只會自身創建一個同名屬性并為其賦值。

9.函數對象的創建過程

創建一個build-in object對象fn;

將fn的內部[[Prototype]]設為Function.prototype;

設置內部的[[Call]]屬性,它是內部實現的一個方法,處理函數調用的邏輯。(簡單的理解為指向函數體);

設置fn.length為funArgs.length,如果函數沒有參數,則將fn.length設置為0;

fn.prototype的constructor指向fn自己;

返回fn.

10.instanceof的原理

查看a是不是B的實例, 就是看B的prototype(構造函數的prototype屬性)指向的對象在不在a的原形鏈上.

11.關于Function和Object的猜測

alert(Function instanceof Function);//true
alert(Function instanceof Object);//true  
alert(Object instanceof Function);//true
alert(Object instanceof Object);//true

想了好久, 沒有想透......

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色偷偷偷亚洲综合网另类| 欧美在线影院在线视频| 精品国模在线视频| 久久精品国产96久久久香蕉| 亚洲精品久久久久国产| 国内精品久久久久久| 国产精品爽黄69| 亲爱的老师9免费观看全集电视剧| 成人网页在线免费观看| 欧美色xxxx| 亚洲片av在线| 亚洲国产精品成人av| 欧美激情一区二区三区在线视频观看| 亚洲国产精彩中文乱码av| 欧美视频在线观看免费| 国产丝袜一区视频在线观看| 亚洲毛片在线看| 久久久久久国产精品三级玉女聊斋| 亚洲精品美女在线| 日韩在线观看免费高清| 国产婷婷色综合av蜜臀av| 日本精品免费一区二区三区| 欧美性在线观看| 欧美激情第6页| 在线播放日韩av| 国产成人福利夜色影视| 亚洲欧美激情精品一区二区| 欧美色道久久88综合亚洲精品| 亚洲精品久久久久久下一站| 久久久久免费精品国产| 欧美国产在线电影| 国产精品自拍偷拍视频| 亚洲成av人乱码色午夜| 成人中文字幕在线观看| 97av在线视频免费播放| 欧美尤物巨大精品爽| 亚洲精品电影网站| 国产精品久久久久久久久久久新郎| 久久久久久久久中文字幕| 日本欧美精品在线| 欧美www视频在线观看| 亚洲国产成人爱av在线播放| 91久久精品日日躁夜夜躁国产| 丝袜美腿亚洲一区二区| 久久久久在线观看| 中文字幕日韩精品在线| 国产精品视频色| 97精品一区二区视频在线观看| 国产精品一区二区av影院萌芽| 国产成人亚洲综合| 亚洲人线精品午夜| 国产成人avxxxxx在线看| 色综合91久久精品中文字幕| 视频在线一区二区| 欧美国产日韩一区二区| 伊人久久久久久久久久久| 亚洲男女自偷自拍图片另类| 欧美在线一区二区视频| 精品视频偷偷看在线观看| 成人羞羞国产免费| 日韩精品视频免费| 欧美性资源免费| 欧美国产第二页| 亚洲国产欧美久久| 国产精品久久久久久久久粉嫩av| 色噜噜国产精品视频一区二区| 91高清在线免费观看| 奇米一区二区三区四区久久| 久久精品视频va| 亚洲女性裸体视频| 国内成人精品一区| 国产精品一香蕉国产线看观看| 国产ts一区二区| 午夜精品久久久久久久99黑人| 国产日韩欧美夫妻视频在线观看| 久久久久一本一区二区青青蜜月| 日韩在线免费视频| 国产三级精品网站| 亚洲国产欧美久久| 国产精品第七影院| 日本免费一区二区三区视频观看| 日韩人在线观看| 一区二区三区四区视频| 亚洲欧美在线x视频| 国产精品亚洲精品| 久久99精品视频一区97| 九九热这里只有精品免费看| 国产一区香蕉久久| 精品香蕉一区二区三区| 成人www视频在线观看| 97在线观看视频| 国产精品视频最多的网站| 夜夜嗨av色一区二区不卡| 色综合色综合久久综合频道88| 欧美激情亚洲另类| 亚洲男人天天操| 亚洲欧美精品一区| 欧美视频精品一区| 国产99久久久欧美黑人| 国内免费精品永久在线视频| 国产精品网站入口| 51ⅴ精品国产91久久久久久| 8x海外华人永久免费日韩内陆视频| 国产美女久久精品香蕉69| 久久久久久69| 91中文精品字幕在线视频| 欧美俄罗斯乱妇| 国产一区二区三区日韩欧美| 国产小视频91| 亚洲人成绝费网站色www| 亚洲欧美在线第一页| 亚洲精品电影久久久| 日韩成人网免费视频| 国产美女91呻吟求| 国产在线播放不卡| 热re99久久精品国产66热| zzjj国产精品一区二区| 国产精品亚洲美女av网站| 26uuu另类亚洲欧美日本老年| 日韩高清电影好看的电视剧电影| 国模极品一区二区三区| 伦理中文字幕亚洲| 九九热这里只有精品免费看| 亚洲欧美国产精品专区久久| 亚洲精品网站在线播放gif| 中文字幕久久久av一区| 国产精品视频男人的天堂| 亚洲 日韩 国产第一| 日韩av黄色在线观看| 久久影院在线观看| 国产日韩欧美夫妻视频在线观看| 国产亚洲人成网站在线观看| 国产精品99久久久久久www| 国外日韩电影在线观看| 欧美一级片免费在线| 91国偷自产一区二区三区的观看方式| 91精品视频在线播放| 国产成人久久久| 国产999在线| 欧美一区视频在线| 中文字幕亚洲一区二区三区| 欧美精品中文字幕一区| 成人激情电影一区二区| 欧美色xxxx| 136fldh精品导航福利| 欧美国产日本在线| 亚洲精品videossex少妇| 国产偷亚洲偷欧美偷精品| 美日韩丰满少妇在线观看| 成人夜晚看av| 国产91在线播放精品91| 成人精品视频久久久久| 中文字幕国产亚洲| 久久精品国产亚洲| 久久精品国产清自在天天线| 久久人人爽国产| 亚洲色图美腿丝袜| 91免费高清视频| 欧美性受xxxx白人性爽| 欧美在线精品免播放器视频| 久久久久久久久爱| 日本高清不卡的在线| 亚洲精品天天看| 不卡中文字幕av|