js 2

javascript

 var a1=[1,3,4,"dhsf",true];
   console.log(a1);
// 全局作用域中的全局對(duì)象window
console.log(window)
// 文檔節(jié)點(diǎn)document 它是全局對(duì)象的屬性 但是本身也是一個(gè)對(duì)象
console.log(document)
// 使用文檔節(jié)點(diǎn)對(duì)象的方法,可以找到頁(yè)面中的DOM元素
console.log(document.getElementsByTagName("button")[0])

回調(diào)函數(shù)

檢查

屬性可以是任意類型,使用in檢查屬性 語法: "屬性名" in 對(duì)象 自身沒有但是原型對(duì)象中含有該屬性宏所,會(huì)返回true
檢測(cè)對(duì)象本身是否含有屬性:對(duì)象.hasOwnProperty("屬性名")
檢查對(duì)象是否是某個(gè)類的實(shí)例 :對(duì)象 instanceof 類

this

  1. 當(dāng)以函數(shù)的形式調(diào)用時(shí),this就是window
  2. 當(dāng)以方法的形式調(diào)用時(shí),誰調(diào)用誰就是this
  3. 當(dāng)以構(gòu)造函數(shù)的形式調(diào)用時(shí),就是新創(chuàng)建的那個(gè)對(duì)象,所以可以使用點(diǎn)來添加它的屬性赌蔑。
  4. 調(diào)用call apply時(shí)俯在,this就是指定的那個(gè)對(duì)象⊥薰撸可以用來改變this
<!-- this關(guān)鍵字 -->
<script>
        function test() {
            console.log(this);
        }
        // 默認(rèn)情況下直接調(diào)用的函數(shù)都是由window調(diào)用的
        // 所以test函數(shù)中的this是window
        test(); // 相當(dāng)于window.test();
    var obj = new Object()
        obj.name = "lnj";
        obj.age = 33;
        obj.say = function () {
            console.log(this.name, this.age);
        }
    
        // 這里的say是一個(gè)方法, 方法必須通過對(duì)象來調(diào)用
        // 所以這里的say方法是由obj對(duì)象調(diào)用的, 所以say方法中的this是obj對(duì)象
        obj.say();
    </script>
</body>
</html>

特殊方法

call apply 都是函數(shù)對(duì)象的方法:均調(diào)用函數(shù)執(zhí)行 fun();fun.apply();fun.call();這三者是等價(jià)的

調(diào)用他們可以將一個(gè)對(duì)象指定為第一個(gè)參數(shù)跷乐,此時(shí)該對(duì)象是函數(shù)執(zhí)行的this,而不是我們定義的window

call方法可以將實(shí)參在對(duì)象(第一個(gè)參數(shù))后依次傳遞,apply需要把實(shí)參封裝到一個(gè)數(shù)組中進(jìn)行傳遞

arguments是一個(gè)類數(shù)組對(duì)象(偽數(shù)組)趾浅,可以通過索引操作數(shù)據(jù)愕提,同樣可以獲取長(zhǎng)度
調(diào)用函數(shù)時(shí),我們的實(shí)參會(huì)在arguments中保存皿哨,不定義形參浅侨。可以直接使用實(shí)參,arguments[0]代表第一個(gè)實(shí)參证膨。里面有一個(gè)屬性callee如输,這個(gè)屬性對(duì)應(yīng)一個(gè)函數(shù)對(duì)象,就是當(dāng)前正在指向的函數(shù)的對(duì)象。
在調(diào)用函數(shù)時(shí)不见,瀏覽器每次都會(huì)傳遞兩個(gè)隱含的參數(shù)澳化,函數(shù)的上下文對(duì)象this 封裝實(shí)參的對(duì)象arguments
可以定義形參,直接使用arguments[i]

function  sum(){
for (let index = 0; index < arguments.length; index++) {
console.log(arguments[index]) 
//10,20,30,40
}
}
sum(10,20,30,40)

eval():執(zhí)行一段字符串形式的js代碼

函數(shù)調(diào)用(執(zhí)行) :注意this的不同

  1. 直接調(diào)用 函數(shù)對(duì)象()
  2. 通過對(duì)象調(diào)用 對(duì)象.函數(shù)名()
  3. 通過new調(diào)用
  4. 通過apply/call 函數(shù)名.call(對(duì)象名)

js代碼的位置

  1. 寫在標(biāo)簽中的事件中稳吮,可是這樣造成結(jié)構(gòu)與行為的耦合缎谷,不便于維護(hù)。
  2. 可以將js代碼寫在a標(biāo)簽中的href屬性中灶似,這樣當(dāng)當(dāng)點(diǎn)擊超鏈接時(shí)會(huì)執(zhí)行js代碼列林。需要使用javascript:開頭
  3. js的代碼是寫在html中的,所以需要以"<script></script>"中標(biāo)記喻奥,屬性值為type=text/javascript
  4. 可以將js代碼編寫到外部文件中席纽,使用script標(biāo)簽的src屬性引用進(jìn)來。優(yōu)點(diǎn):不同的文件均可以導(dǎo)入文件撞蚕,而且可利用瀏覽器的緩存機(jī)制润梯。

注意:script一旦引入外部文件,不會(huì)再執(zhí)行其他js代碼甥厦。

作用域與函數(shù)作用域

作用域指的是一個(gè)變量起作用的區(qū)域纺铭。js中沒有塊級(jí)作用域,就是除了函數(shù)作用域刀疙,所有花括號(hào)里面的變量就是全局變量舶赔。

全局作用域:

  1. 直接編寫在script標(biāo)簽中js代碼,都在全局作用域
  2. 全局作用域在頁(yè)面打開時(shí)創(chuàng)建谦秧,關(guān)閉時(shí)銷毀
  3. 全局作用域中有個(gè)全局對(duì)象window 它代表瀏覽器的窗口竟纳,由瀏覽器創(chuàng)建,可以直接使用
  4. 在全局作用域創(chuàng)建的變量都是window對(duì)象的屬性疚鲤,函數(shù)都是window對(duì)象的方法

函數(shù)作用域(局部變量)
定義形參就相當(dāng)于定義了函數(shù)作用域中聲明了變量

隱式全局變量:在函數(shù)中(js)锥累,不使用var聲明的變量是全局變量

  1. 調(diào)用函數(shù)時(shí)創(chuàng)建函數(shù)作用域,函數(shù)執(zhí)行完畢集歇,作用域銷毀
  2. 每次調(diào)用一次函數(shù)桶略,就會(huì)創(chuàng)建一個(gè)新的作用域
  3. 在函數(shù)作用域中是可以訪問全局作用域里面的變量的,但是全局作用域的變量是不可以訪問函數(shù)作用域中的變量的
  4. 當(dāng)在函數(shù)作用域操作一個(gè)變量時(shí)诲宇,他會(huì)先在自身的作用域?qū)ふ沂欠裼凶兞考始撸缓笤偃ド弦患?jí)作用域?qū)ふ遥钡饺肿饔糜蚬美叮绻肿饔糜蛉詻]找到鹅心,就會(huì)報(bào)錯(cuò)。referenceError
  5. 在函數(shù)作用域想要訪問全局變量纺荧“桶铮可以使用window對(duì)象來定位

類型

  1. 數(shù)據(jù)類型:字面量類型: Number String BoolLean Undefined Function Object
  2. null是object類型的 未定義變量時(shí)undefined類型的
  3. Null 中只有null一種取值 表示是一個(gè)空對(duì)象
  4. Undefined中只有undefined 變量定義為未賦值就是undefined

類型轉(zhuǎn)換

轉(zhuǎn)換為string

  • 1)使用ToString()方法溯泣,但是null與undefined類型沒有該方法,不會(huì)影響原數(shù)據(jù)榕茧。
  • 2)調(diào)用String函數(shù) null 轉(zhuǎn)換為null undefined轉(zhuǎn)換為undefined
  • 3)+""

轉(zhuǎn)換為number

  • js中所有的數(shù)字都是number
    Nuber.Nax_Vaule
    Infinity
    -Infitity
    NAN Not A Number
  • 如果字符串是純數(shù)字垃沦,則轉(zhuǎn)換為對(duì)應(yīng)的數(shù)字
    如果字符串有非數(shù)字,轉(zhuǎn)換為NAN
    如果字符串是空 或者全是空格的字符串用押,轉(zhuǎn)為數(shù)字0
    布爾:
    true:1 false:0
    undefined轉(zhuǎn)換為NAN
    null轉(zhuǎn)換為0
  • 調(diào)用Number()函數(shù)
  • 調(diào)用parseInt(sting,進(jìn)制數(shù)) 專門針對(duì)字符串肢簿;將字符串中的有效的整數(shù)內(nèi)容取出來,然后轉(zhuǎn)換為Number A=1234PX" 同理還有 parseFloat
    如果非string進(jìn)行操作 那么會(huì)將其先轉(zhuǎn)換為string之后運(yùn)算
    /1 -0 *1 取+

轉(zhuǎn)換為Boolean

數(shù)字:除了0 NAN 都是true
字符串:除了空串 都是true
對(duì)象:true 這里就有包裝類的特殊情況
var b=new Boolean(false)蜻拨;
if(b)
{
console.log("對(duì)象轉(zhuǎn)化為布爾值都是true池充,所以會(huì)執(zhí)行")
}
null undefined:false
對(duì)對(duì)象取兩次反:轉(zhuǎn)換為布爾值

運(yùn)算符

  • +:任何事物與字符串都會(huì)自動(dòng)轉(zhuǎn)換為字符串,相加都是拼接
  • 任何做- * /都會(huì)轉(zhuǎn)換為數(shù)字:可使用任意值-0 *1 /1來轉(zhuǎn)換為number -:會(huì)先轉(zhuǎn)換為數(shù)字 然后再進(jìn)行計(jì)算
  • 自增(i++;++i)其中i都會(huì)加一缎讼,不做改變時(shí)表達(dá)式的值
  • 邏輯[針對(duì)布爾值] ($ | ! )(|| &&)
    非布爾值的邏輯運(yùn)算:會(huì)先轉(zhuǎn)換為布爾值 然后在運(yùn)算 并且返回原值
    與:如果第一個(gè)值是true,則返回第二個(gè)數(shù)值
    如果第一個(gè)值是fause,返回第一個(gè)值
    或:
    如果第一個(gè)值是true,返回第一個(gè)值
    如果第一個(gè)值是fause,返回第2個(gè)值
  • 關(guān)系運(yùn)算符:返回布爾值 :注意沒人可以必過NAN 字符串比較的是字符編碼收夸,字符是一位一位比較的
    比較兩個(gè)字符串,可能得出錯(cuò)誤結(jié)論
    在字符串使用轉(zhuǎn)義字符輸入unicode編碼"\u四位16進(jìn)制"
    在網(wǎng)頁(yè)中使用$#編碼
  • 等于:NAN不等于任何數(shù)值血崭,包括它自己 會(huì)轉(zhuǎn)換為相同數(shù)據(jù)類型后在比較
  • 全等 ===不會(huì)做自動(dòng)轉(zhuǎn)換 而等于會(huì)做自動(dòng)轉(zhuǎn)換

流程控制語句

  1. 條件判斷語句
    幾種if:if只能控制緊隨其后的語句卧惜,if語句中只執(zhí)行一句。
  2. 條件分支語句
    switch case :沒有break就會(huì)執(zhí)行滿足條件的之后的夹纫。
  3. 循環(huán)語句

對(duì)象(復(fù)合數(shù)據(jù)類型) 引用

與基本數(shù)據(jù)類型不同咽瓷,基本數(shù)據(jù)類型的數(shù)值都是存儲(chǔ)在棧空間的舰讹,數(shù)值之間是獨(dú)立存貯茅姜,修改并不會(huì)互相影響。
而對(duì)象是存儲(chǔ)在堆空間的月匣。每創(chuàng)建一個(gè)對(duì)象钻洒,都會(huì)在堆內(nèi)存開辟一段空間存儲(chǔ)對(duì)象,變量保存的是對(duì)象的地址锄开,如果兩個(gè)變量保存同一個(gè)內(nèi)存地址素标,說明指向同一對(duì)象,但是它們并不相等院刁。修改其中一個(gè)變量的屬性粪狼,另一個(gè)變量必然受到影響。在椩匍空間存儲(chǔ)的是對(duì)象的地址,這個(gè)地址指向堆空間存儲(chǔ)的對(duì)象

字面量:永遠(yuǎn)不會(huì)改變的值困鸥。變量直接保存字面量锰茉,并且數(shù)值可變。使用var聲明奕枢,記得賦值

  1. 內(nèi)建對(duì)象
    ES標(biāo)準(zhǔn)定義的對(duì)象卦绣。任何瀏覽器都有可以使用 MAth Function String

  2. DOM 對(duì)象
    由js運(yùn)行環(huán)境提供的對(duì)象盒延,主要是瀏覽器提供的對(duì)象 比如 DOM BOM

  3. 自定義對(duì)象 :LW自己定義的對(duì)象(引用數(shù)據(jù)類型 堆里存地址)

  • 1.1 對(duì)象屬性

    讀取:對(duì)象名.屬性
    如果不存在添寺,不會(huì)報(bào)錯(cuò)胯盯,會(huì)返回undefined
    修改:對(duì)象名.屬性=值
    刪除:delete 對(duì)象.屬性

    特殊的屬性:對(duì)象["屬性"]=值 同樣需要使用該方式讀取 []可接受變量
    屬性的值可以是任何類型

    如果對(duì)象中不含有這個(gè)屬性,訪問的話會(huì)返回undefined计露,并不會(huì)報(bào)錯(cuò)
    刪除:delete 對(duì)象.屬性

  • 1.2 使用 for in 遍歷對(duì)象屬性
    for 變量 in 對(duì)象
    對(duì)象有幾個(gè)屬性博脑,這里就會(huì)循環(huán)幾次,每次會(huì)把屬性名賦值給變量薄坏。想要輸出屬性值趋厉。使用 對(duì)象[變量]

  • 1.3 屬性可以是任意類型

  • 1.2 創(chuàng)建對(duì)象

方法1:使用New關(guān)鍵字調(diào)用構(gòu)造函數(shù),構(gòu)造函數(shù)就是專門用來創(chuàng)建對(duì)象的胶坠。

var 對(duì)象=new Object();
只能動(dòng)態(tài)給空對(duì)象新增屬性,使用對(duì)象.屬性=屬性值

<script>
    1.使用默認(rèn)類創(chuàng)建一個(gè)空對(duì)象
    var obj = new Object()
    // 2.動(dòng)態(tài)給空對(duì)象新增屬性
    obj.name = "lnj";
    obj.age = 33;
    // 3.動(dòng)態(tài)給空對(duì)象新增方法
    obj.say = function () {
        console.log("hello");
    }
    // 4.使用對(duì)象的屬性和方法
    console.log("使用默認(rèn)類name"+obj.name);
    console.log("使用默認(rèn)類age"+obj.age);
    obj.say();
    </script>

方法2:使用字面量創(chuàng)建君账,可以直接賦值

          var 對(duì)象名={屬性:屬性值,屬性名:屬性值}
          可以在創(chuàng)建的時(shí)候同時(shí)添加屬性沈善,使用:
          注意如果是特殊的屬性乡数,屬性也需要加括號(hào)
var obj = {}; // 相當(dāng)于var obj = new Object()
// 2.動(dòng)態(tài)給空對(duì)象新增屬性
obj.name = "lnj";
obj.age = 33;
或者定義時(shí)賦值‘
var obj = {
    name:"lw",
    age:12,
    say : function () {
        console.log("使用字面量1"+"hello");
    }
    }; 

方法3:使用工廠函數(shù)

function 函數(shù)名(形式參數(shù)){
    創(chuàng)建一個(gè)新對(duì)象
    var xx=new Object();
    像對(duì)象中添加屬性
    對(duì)象.屬性=屬性值;
    對(duì)象.方法=function(){
        函數(shù)體
    }
}

<!-- 4.2.1工廠函數(shù) -->
<script>
function createPerson(name, age) {
    var obj = new Object();
    obj.name = name;
    obj.age = age;
    obj.say = function () {
        console.log("hello");
    }
    return obj;
}
var obj1 = createPerson("lnj", 33);
var obj2 = createPerson("zq", 18);
console.log(obj1);
console.log(obj2);
</script>
<!-- 4.2.2 工廠函數(shù) -->
<script>
        function createPerson(name, age) {
            var obj = {
                name: name,
                age: age,
                say: function () {
                    console.log("hello");
                }
            }
            return obj;
        }
        var obj1 = createPerson("lnj", 33);
        var obj2 = createPerson("zq", 18);
        console.log(obj1);
        console.log(obj2);
    </script>
  

方法4:使用構(gòu)造函數(shù)(使用new關(guān)鍵字):因?yàn)楣S函數(shù)的構(gòu)造函數(shù)一直是object,所以創(chuàng)建的對(duì)象的類型都相同闻牡。

構(gòu)造函數(shù)與普通函數(shù)的不同在于調(diào)用方式净赴,構(gòu)造函數(shù)使用new關(guān)鍵字來調(diào)用。

所謂的調(diào)用就是函數(shù)的執(zhí)行

1.立即創(chuàng)建一個(gè)新的對(duì)象
2.將新建的對(duì)象設(shè)置為函數(shù)中的this
3 逐行執(zhí)行函數(shù)中的代碼

  1. 將新建的對(duì)象作為返回值返回
    使用一個(gè)構(gòu)造函數(shù)創(chuàng)建的對(duì)象罩润,我們稱為一類對(duì)象玖翅,所以也稱構(gòu)造函數(shù)為類。

函數(shù)

函數(shù)就是一系列語句的集合割以。只有函數(shù)式可以執(zhí)行的金度,其他的數(shù)據(jù)時(shí)不可以的严沥。
使用函數(shù)提高了代碼復(fù)用消玄,提高了使用效率

創(chuàng)建函數(shù)(對(duì)象)

  • 1 將函數(shù)要實(shí)現(xiàn)的代碼以字符串的形式傳遞給構(gòu)造函數(shù):

       var fun=new Function("console.log('這是我傳遞的字符串')")
    
       封裝的代碼不會(huì)立即執(zhí)行,會(huì)在函數(shù)調(diào)用的時(shí)候執(zhí)行  對(duì)象()
    
  • 2 使用函數(shù)聲明來創(chuàng)建函數(shù)

            function 函數(shù)名(形參){語句}
    
  • 3 使用函數(shù)表達(dá)式創(chuàng)建函數(shù)(匿名函數(shù))

就是使用賦值符號(hào)携龟。

          var 函數(shù)名=function(){}

這是一個(gè)立即執(zhí)行函數(shù):函數(shù)定義完骨宠,立即被調(diào)用层亿,一般只執(zhí)行一次

注意

如果函數(shù)作為對(duì)象的屬性:我們稱為方法匿又。
fun();調(diào)用函數(shù),相當(dāng)于使用函數(shù)返回值
fun; 使用函數(shù)對(duì)象
break:退出當(dāng)前循環(huán)
continue:跳過當(dāng)次循環(huán)
return:退出函數(shù)
注意:

各個(gè)對(duì)象的函數(shù)是相同的痛单,浪費(fèi)內(nèi)存旭绒,將其在全局中定義挥吵,但是污染了全局作用域的命名空間忽匈,而且不安全丹允。使用原型對(duì)象解決這個(gè)問題

原型對(duì)象

我們每創(chuàng)建一個(gè)函數(shù)時(shí)。解析器都會(huì)給函數(shù)(對(duì)象)添加一個(gè)屬性prototype,這個(gè)屬性對(duì)應(yīng)著唯一對(duì)象萎羔,這個(gè)對(duì)象就是原型對(duì)象碳默。當(dāng)函數(shù)使用構(gòu)造函數(shù)調(diào)用時(shí)髓废,它所創(chuàng)建的對(duì)象會(huì)有一個(gè)隱含屬性指向該構(gòu)造函數(shù)的原型對(duì)象慌洪,通過使用proto來訪問該屬性冈爹。原型對(duì)象就是類中的公用區(qū)域频伤,所有對(duì)象都擁有原型對(duì)象中擁有的屬性憋肖。就是我們?cè)L問一個(gè)對(duì)象的屬性時(shí),他會(huì)首先在自己的屬性中找怎炊,如果有直接使用结胀,不再尋找糟港。找不到去原型對(duì)象中找秸抚,直到原型為object剥汤。所以創(chuàng)建構(gòu)造函數(shù)時(shí),將對(duì)象共有的屬性與方法寫原型對(duì)象中(prototype)暮芭。
myaa.protype.a 原型對(duì)象中添加屬性

所以我們創(chuàng)建構(gòu)造函數(shù)時(shí),可以講對(duì)象共有的屬性以及方法添加到構(gòu)造函數(shù)的原型對(duì)象中砾莱。這樣不用給每個(gè)對(duì)象添加腊瑟,而且不會(huì)影響全局作用域。還可以使得所有對(duì)象都擁有屬性與方法峭范。

當(dāng)我們打印對(duì)象時(shí)游岳,實(shí)際調(diào)用的是它的tostring方法胚迫,不想輸出[object object]访锻∑谌可以給對(duì)象重定義tostring方法

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <title>函數(shù)</title>
<body>

<script>
//     function sayHi(name) {
//         alert(name);
//     }
//     sayHi("lnj");

//     var sayHello = function (name, age) {
//         console.log("name = "+ name, "age = "+age);
//     }
//     sayHello("lnj", 12);

//     var sayHello = function (name, age) {
//        alert("name = "+ name+"  "+"age = "+age);
//     }
//     sayHello("lnj", 22);


//     function sum(a, b) {
//    var res = a + b;
//    return res;
// }
// var res = sum(10, 20);
// console.log(res); // undefined
//arguments
// function getSum() {
//       var sum = 0;
//       for (var i = 0; i < arguments.length; i++) {
//         sum += arguments[i];
//       }
//       return sum;
//     }
//     var sum = getSum(5, 1, 3, 4);
//     console.log(sum);
// //作為參數(shù)
// var sayHi = function () {
//         console.log("hello world");
//     }
//     function test(fn) {
//         fn();
//     }
//     test(sayHi);
//作為返回值
    function test() {
        var sayHi = function () {
            console.log("hello world11");
        }
        return sayHi
    }
    var res = test();

      (function () {
        console.log("hello world");
    })();

    function test() {
        function demo() { // 該函數(shù)是局部作用域
            console.log("demo函數(shù)");
        }
        // 可以在同一個(gè)局部作用域中訪問
        demo();
    }
    // 不能在局部范圍以外訪問
    test();
    function test() {
        console.log("指趣學(xué)院");
    }
    // 2.函數(shù)表達(dá)式
   
    
    function test() {
        console.log("指趣學(xué)院");
    }
    var demo;
    test();
   
    demo = function () {
        console.log("www.it666.com");
    }
     

</script>
</body>
</html>

參數(shù)

調(diào)用函數(shù)時(shí)沙庐,實(shí)參傳遞給形參拱雏,瀏覽器不會(huì)檢查實(shí)參的類型與數(shù)量贡耽,如果實(shí)際參數(shù)少蒲赂,則會(huì)有undefined的形參凳宙。
簡(jiǎn)化的參數(shù)傳遞:
如果形參的參數(shù)過多,可以定義一個(gè)對(duì)象(屬性為這些參數(shù)),將該對(duì)象作為實(shí)參傳遞給函數(shù)有梆,這時(shí)形參可以簡(jiǎn)寫為任意東西X饺汹,函數(shù)體中使用X.屬性
函數(shù)作為參數(shù),此時(shí)函數(shù)叫做回調(diào)函數(shù)

function f1(fn) {
        fn();
           console.log("haha") ;
        }
      function f2(){
          console.log("xixi")
      }
      f1(f2);
//xixi haha

形參過多時(shí)兜辞,可以使用對(duì)象作為實(shí)參逸吵,且參數(shù)沒有順序限制扫皱。

  function person1 (o){
   console.log("我叫"+o.name+"我今年"+o.age+"我是一個(gè)"+o.sex)
 }
 var obj ={name:"lw",age:18,sex:"female"};
 console.log(person1(obj))

返回值

return:任意數(shù)據(jù)類型
一個(gè)函數(shù)有return 就有返回值
一個(gè)沒有return 就沒有返回值
一個(gè)沒有return 就沒有返回值,在調(diào)用時(shí)接收了段多,那么就是undefined
當(dāng)函數(shù)調(diào)用后衩匣,需要這個(gè)返回值琅捏,就定義一個(gè)變量接收它
在函數(shù)中return后的語句都不會(huì)執(zhí)行柄延,函數(shù)不寫return就會(huì)返回undefined 寫了return沒有參數(shù) 函數(shù)調(diào)用之后還是undefined

垃圾回收

我們做的就是把不使用的對(duì)象設(shè)置為null

數(shù)組

數(shù)組[索引] 讀取不存在的索引 不會(huì)報(bào)錯(cuò)會(huì)返回undefined
像數(shù)組的最后一個(gè)位置添加元素:arr[arr.lenth]=數(shù)值
數(shù)組中的元素可以是任意類型 var arr=new Array(10,"hello",null,undefined,{name:"jj"}市俊,function(){alert("hello")})
重要的屬性:length 可以修改:若長(zhǎng)度大于原有的摆昧,多出來的會(huì)空閑绅你,若短忌锯,會(huì)刪除。

創(chuàng)建數(shù)組

  1. 字面量
    var 數(shù)組=[];可以同時(shí)指定數(shù)組的元素值
  2. 使用構(gòu)造函數(shù)
    var 數(shù)組=new Array();
    同時(shí)也可以定義數(shù)組值似舵,作為函數(shù)的形式參數(shù)
   var a1=[1,3,4,"dhsf",true];
    var a2=[];
    var a3=new Array();
    var a4=new Array("Saab","Volvo","BMW");
  1. 區(qū)別(一個(gè)參數(shù)的時(shí)候)
    var a;
    a=[10];元素是10
    arr=new Array(10) 數(shù)組長(zhǎng)度是10

數(shù)組常見的方法

1. push :在數(shù)組的末尾添加一個(gè)或者多個(gè)元素啄枕,并返回新數(shù)組的長(zhǎng)度
2. unshift:數(shù)組的起始添加一個(gè)或者多個(gè)元素频祝,并返回新數(shù)組的長(zhǎng)度(其他元素索引會(huì)改變)
3. pop:該方法是刪除數(shù)組的最后一個(gè)元素常空,并返回刪除的元素。
4. shift:該方法是刪除數(shù)組的第一個(gè)元素烘嘱,并返回刪除的元素醉鳖。
5. slice:從數(shù)組中抽取元素盗棵,不改變?cè)瓟?shù)組纹因,將抽取的封裝到新數(shù)組中瞭恰,然后返回該新數(shù)組惊畏。參數(shù):截取的數(shù)組的開始下標(biāo)驳棱,截取的數(shù)組的結(jié)束下標(biāo)
6.slice:抽取想要的元素   參數(shù)就是抽取的區(qū)間信息
語法:截取的新數(shù)組=slice[截取的數(shù)組的起始下標(biāo)农曲,截取的下標(biāo)的數(shù)組結(jié)束下標(biāo))
注意:方法并不會(huì)改變?cè)瓟?shù)組,注意索引的包含關(guān)系,而且第二個(gè)參數(shù)可不寫,截取第一個(gè)參數(shù)以后的,同樣索引也可以是**負(fù)數(shù)**暮的,從后向前面計(jì)算 -1:倒數(shù)第一個(gè)冻辩。
7. splice:刪除數(shù)組恨闪,會(huì)影響原始的數(shù)組,原數(shù)組只剩刪除的部分咙咽,返回值是顯示刪除的部分钧敞,相加為原數(shù)組。
被刪除的元素=splice(開始位置的索引弄诲,刪除的個(gè)數(shù),想要插入的元素:出現(xiàn)的數(shù)組的最前面)

數(shù)組的遍歷:將數(shù)組元素全部取出來

1.使用for循環(huán)

使用forEach方法(IE8以及IE8以下的瀏覽器不支持該方法)
該方法接收一個(gè)函數(shù)作為參數(shù)凤巨,也就是函數(shù)名佑淀,一般我們會(huì)傳遞一個(gè)匿名函數(shù)伸刃,這個(gè)函數(shù)由我們創(chuàng)建但是并不由我們調(diào)用捧颅,稱做回調(diào)函數(shù)碉哑。
瀏覽器會(huì)在瀏覽器中傳遞三個(gè)參數(shù)扣典,
第一個(gè):當(dāng)前正在遍歷的元素
第二個(gè):當(dāng)前正在遍歷的元素的索引
第三個(gè):當(dāng)前正在遍歷的數(shù)組
arr.forEach(funtion(value,index,arr){console.log("value="+value)})

js通過dom來對(duì)文檔進(jìn)行操作 只要理解dom就可以隨心所欲操作web頁(yè)面
DOM :文檔對(duì)象模型
文檔:整個(gè)HTML文檔
對(duì)象: 網(wǎng)頁(yè)中的每一部分都轉(zhuǎn)換為對(duì)象
模型:使用模型來表示對(duì)象之間的關(guān)系 方便獲取對(duì)象 就是一棵樹(dom樹)

變量提升

先提升變量,在提升聲明
變量的提前聲明:使用var關(guān)鍵字聲明的 會(huì)在代碼執(zhí)行前被聲明 湿硝,不使用var則不會(huì)提前聲明关斜,但是只是在當(dāng)前作用域提升蚤吹,并且提升到最前面
函數(shù)聲明裁着,會(huì)被所有代碼執(zhí)行前創(chuàng)建二驰,所以可以在函數(shù)聲明前調(diào)用該函數(shù)
函數(shù)表達(dá)式桶雀,不會(huì)提前

  <script>
f1();
function f1(){
    console.log("1")
}
f1();
function f1(){
    console.log("2")
}
f1()
var f2=function(){
    console.log("3")
}
f2();
var f2=function(){
    console.log("4")
}
f2();
  </script>

節(jié)點(diǎn):構(gòu)成html文檔的最基本單元(Node)

標(biāo)簽(元素)節(jié)點(diǎn) 屬性節(jié)點(diǎn)(id name type) 文檔節(jié)點(diǎn)(html) 文本節(jié)點(diǎn)(標(biāo)簽中的文本內(nèi)容)
元素:整個(gè)的元素全肮,其中包括屬性節(jié)點(diǎn) 文檔節(jié)點(diǎn)
節(jié)點(diǎn)的屬性:
文檔節(jié)點(diǎn):nodeName:#document nodeType:9 nodeValue:null
元素節(jié)點(diǎn):nodeName:標(biāo)簽名 nodeType:1 nodeValue:null
屬性節(jié)點(diǎn):nodeName:屬性名 nodeType:2 nodeValue:屬性值
文本節(jié)點(diǎn):nodeName:#text nodeType:3 nodeValue:文本內(nèi)容
window對(duì)象

調(diào)試

在source中進(jìn)行調(diào)試

獲取元素節(jié)點(diǎn)

getElementById:id屬性 一個(gè)
getElementsByName:name屬性 一組類數(shù)組對(duì)象
getElementsByTagName:標(biāo)簽屬性 一組
querySelector:主要字符串的選擇器 總會(huì)返回唯一的元素 如果有多個(gè),也只是返回第一個(gè)
querySelectorAll:符合條件的元素會(huì)封裝在一個(gè)數(shù)組中返回 盡管只有一個(gè)

獲取元素節(jié)點(diǎn)的子節(jié)點(diǎn)

childNodes:所有子節(jié)點(diǎn) 包括文本節(jié)點(diǎn)在內(nèi)的所有節(jié)點(diǎn)
firstChild
lastChild

獲取父節(jié)點(diǎn)以及兄弟節(jié)點(diǎn)

parentNode
previousSibling
nextSibling

屬性

innerHTML:自結(jié)束標(biāo)簽沒用评疗,獲取元素內(nèi)部的html代碼
innerText:獲取元素內(nèi)部的文本屬性

獲取body的內(nèi)容

document.body 保存的是body的引用
document.all 代表所有元素
document.element

事件(onxxxx)

就是文檔或?yàn)g覽器窗口中發(fā)生一些特定的交互瞬間百匆,js與html之間的交互是通過事件實(shí)現(xiàn)的

定義事件 用戶與瀏覽器的交互行為

  1. 直接在事件對(duì)應(yīng)的屬性中設(shè)置一些js代碼加匈,當(dāng)事件被觸發(fā)時(shí)矩动,會(huì)執(zhí)行代碼。但是會(huì)存在結(jié)構(gòu)與行為的耦合男图,不方便維護(hù)逊笆。
<button id="btn1" onclick="alert('nihao')">按鈕</button>
  1. 為事件綁定對(duì)應(yīng)的響應(yīng)函數(shù)难裆,當(dāng)事件被觸發(fā)時(shí)乃戈,函數(shù)可以被調(diào)用執(zhí)行症虑,這里可以不可以為一個(gè)元素綁定多個(gè)事件谍憔,后面的會(huì)覆蓋前面的呦
<button>按鈕</button>
<script>
    var btn=document.getElementsByTagName("button")[0];
    btn.onclick=function(){
        alert("你還點(diǎn)")
    }
</script>
1. 使用script標(biāo)簽
2. 獲取對(duì)象
3. 綁定事件
  1. 使用addEventListener方法為元素綁定響應(yīng)函數(shù)

參數(shù)1:需要執(zhí)行的事件习贫,事件并沒有ON前綴
參數(shù)2:事件觸發(fā)時(shí)執(zhí)行的回調(diào)函數(shù)
參數(shù)3:需要一個(gè)布爾值來確定是否在捕獲階段獲取事件 一般是false
相比直接綁定苫昌,可以綁定多個(gè)事件 蜡歹,this 是綁定事件的對(duì)象
元素.addEventListener();
缺陷:不支持IE8以及以下的瀏覽器
使用 addEvent()
參數(shù)1:需要執(zhí)行的事件月而,事件有ON前綴
參數(shù)2:事件觸發(fā)時(shí)執(zhí)行的回調(diào)函數(shù)
區(qū)別:與addEventListener執(zhí)行結(jié)果相反 后綁定先執(zhí)行 this 是window

兼容this與事件綁定 定義函數(shù) 為指定元素綁定響應(yīng)函數(shù)

obj:要綁定事件的對(duì)象
eventStr:事件的字符串
callback:事件的回調(diào)函數(shù)
function bind(obj溢谤,eventStr,callback){
    if( obj.addEventListener)
    //普通瀏覽器
    {
           obj.addEventListener(eventStr,callback,false);
    }
 
    //IE8以及以下
    else{
          obj.addEvent("on"+eventStr,callback)
    }
  

}

事件注意事項(xiàng)

  1. 當(dāng)事件被觸發(fā)時(shí)世杀,函數(shù)可以被調(diào)用執(zhí)行瞻坝,這時(shí)瀏覽器會(huì)將一個(gè)事件對(duì)象作為實(shí)參傳遞給函數(shù)所刀,該對(duì)象包含了該事件的常用屬性浮创,比如 鼠標(biāo)的坐標(biāo) shift元素是否被觸發(fā)
    但是ie8及其以下的瀏覽器是不支持該對(duì)象的斩披,它是將其封裝在window對(duì)象的屬性中的垦沉,假設(shè)對(duì)象為event 一般使用event=event||window.event來實(shí)現(xiàn)兼容
    if(!event){event=window.event} 如果不存在?耳奕?null

onload事件

事件是在頁(yè)面加載完成之后才會(huì)觸發(fā) 一般WWIwindow綁定一個(gè)onload事件

<script>
        window.onload=function(){
            var btn=document.getElementsByTagName("button")[0];
            btn.onclick=function(){
                alert("你還點(diǎn)")
            }
        }
        </script>

事件的冒泡

事件的冒泡就是事件的向上傳導(dǎo),當(dāng)后代元素上的事件被觸發(fā)時(shí)坏挠,其祖先元素的相同事件也會(huì)被觸發(fā)降狠。
取消冒泡:將事件對(duì)象的cncelBubble屬性設(shè)置為true

事件的委托

指將事件統(tǒng)一綁定給元素的共同的祖先元素榜配,然后當(dāng)后代元素上的事件被觸發(fā)時(shí)蛋褥,會(huì)一直冒泡到祖先元素烙心,從而指向祖先元素的系響應(yīng)函數(shù)來處理事件。
事件委托利用了事件冒泡匙瘪,通過委托辆苔,減少了事件的綁定次數(shù)扼劈,提高了程序的性能荐吵。

事件的傳播

微軟:事件由內(nèi)向外傳播 即事件冒泡
網(wǎng)景:事件由外向內(nèi)傳播
W3C綜合兩個(gè)公司先煎,將事件傳播分三個(gè)階段
捕獲階段:

  • 在捕獲階段時(shí)由最外層的祖先元素,想目標(biāo)元素進(jìn)行事件的捕獲占锯,但是默認(rèn)不會(huì)觸發(fā)事件
    目標(biāo)階段:
  • 事件捕獲到目標(biāo)元素,捕獲結(jié)束開始子啊目標(biāo)元素上觸發(fā)事件
    時(shí)間冒泡:
  • 事件從目標(biāo)元素向它的祖先元素傳遞堡称,依次觸發(fā)却紧。
  • 如果希望在捕獲階段觸發(fā)事件晓殊,可以addEventListener的第三個(gè)參數(shù)設(shè)置為true挺物,一般我們并不希望在捕獲階段觸發(fā)事件识藤,IE8以及以下沒有捕獲階段

json

  1. js就是一個(gè)特殊格式的字符串,這個(gè)字符串可以被任何語言識(shí)別赶撰,
    并且可以轉(zhuǎn)換為任意任意語言中的對(duì)象
    json中的js對(duì)象的格式相似豪娜,只不過json中額屬性名必須加引號(hào)
    json分類:
    數(shù)組[]
    對(duì)象{}
    json中允許的值:字符串 數(shù)值 布爾值 null 對(duì)象

將json字符串轉(zhuǎn)換為js對(duì)象:JSON類
JSON.parse()
js對(duì)象轉(zhuǎn)換為json字符串
JSON,stringify

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <title>類的定義及其對(duì)象</title>
<body>
<script>
   // 通過構(gòu)造函數(shù)定義一個(gè)類
    // 在構(gòu)造函數(shù)中描述該類事物共性的屬性和行為
    function Person(name, age) {
        this.name = name;
        this.age = age;
        this.say = function () {
            console.log(this.name, this.age);
        }
    }
    // 通過構(gòu)造函數(shù)創(chuàng)建對(duì)象
    // new 的執(zhí)行過程
    // 1 在內(nèi)存中創(chuàng)建了一個(gè)空的對(duì)象
    // 2 讓構(gòu)造函數(shù)中的this指向剛剛創(chuàng)建的對(duì)象
    // 3 執(zhí)行構(gòu)造函數(shù),在構(gòu)造函數(shù)中設(shè)置屬性和方法(當(dāng)然也可以做其它事情)
    // 4 返回了當(dāng)前對(duì)象
    var p1 = new Person("lnj", 33);
    var p2 = new Person("zq", 18);
    console.log(p1.say());
    p2.say();

    // // 每個(gè)對(duì)象都可以訪問一個(gè)名稱叫做constructor的屬性, 屬性指向創(chuàng)建該實(shí)例的構(gòu)造函數(shù)
    // var obj = new Object();
    // obj.name = "lnj";
    // console.log(obj); // Object

    // function Person(name) {
    //    this.name = name;
    // }
    // var p = new Person("zs");
    // console.log(p); // Person
    // // 可以通過對(duì)象的constructor屬性判斷某個(gè)對(duì)象是否是某個(gè)類的實(shí)例
    // console.log(p.constructor === Person); // true
    // // 也可以通過instanceof判斷某個(gè)對(duì)象是否是某個(gè)類的實(shí)例
    // // 企業(yè)開發(fā)推薦
    // console.log(p instanceof Person);
</script>
    

</body>
</html>

幾種對(duì)象

  1. Date對(duì)象

    var date =new Date() 會(huì)獲得當(dāng)前時(shí)間

    獲取指定時(shí)間:參數(shù)中指定 月/日/年 時(shí): 分: 秒 var date =new Date()

    gettime():是獲取當(dāng)前時(shí)間時(shí)間戳 距離格林威治時(shí)間(1970 1/1 0:0:0)所花費(fèi)的毫秒數(shù)

  2. Math對(duì)象

math 對(duì)象魚其他不同鸣奔。不是一個(gè)構(gòu)造函數(shù),它屬于一個(gè)工具類不用創(chuàng)建對(duì)象锨匆。它里面封裝了數(shù)學(xué)運(yùn)算的相關(guān)屬性以及方法恐锣。

Math.random():生成 0-1的隨機(jī)數(shù)

Math.round(Math.random()*x):生成 0-x的隨機(jī)數(shù)

Math.round(Math.random()*(y-x))+x:生成 x-y的隨機(jī)數(shù)

以下三個(gè)是js的包裝類

3.String對(duì)象
可以將基本數(shù)據(jù)類型轉(zhuǎn)換為String對(duì)象
var s=123;
s.tostring()
發(fā)現(xiàn)s是基本數(shù)據(jù)類型暗膜,是不可以添加屬性與方法学搜,但是這里確實(shí)可以瑞佩,
這是因?yàn)閷?duì)基本數(shù)據(jù)的數(shù)值調(diào)用屬性以及方法時(shí)炬丸,瀏覽器會(huì)臨時(shí)使用包裝類將其轉(zhuǎn)化為對(duì)象稠炬,然后調(diào)用對(duì)象的屬性與方法,調(diào)用結(jié)束撤摸,會(huì)轉(zhuǎn)換會(huì)原來的數(shù)據(jù)類型

底層字符串是以數(shù)組的形式保存的钥飞,所以可以使用下標(biāo)
4.Number對(duì)象
可以將基本數(shù)據(jù)類型轉(zhuǎn)換為Number對(duì)象
5.Boolean對(duì)象
可以將基本數(shù)據(jù)類型轉(zhuǎn)換為Boolean對(duì)象

修改樣式

樣式的優(yōu)先級(jí):

1.就近原則

2.理論上:行內(nèi)>內(nèi)嵌>鏈接>導(dǎo)入

3.實(shí)際上:內(nèi)嵌、鏈接渐扮、導(dǎo)入在同一個(gè)文件頭部,誰離相應(yīng)的代碼近耻讽,誰的優(yōu)先級(jí)高

  1. 行內(nèi)的樣式

    元素.style.樣式名=樣式值

    原來css的樣式含有-针肥,修改為駝峰命名具则。font-size 改為fontSize
    如果為樣式添加!important此方法就會(huì)失效
    之中方式為屬性設(shè)置內(nèi)聯(lián)樣式

  2. 當(dāng)前的樣式(IE)

元素.currentStyle.樣式名=樣式值

若是元素沒有設(shè)置樣式蜂厅,獲取其默認(rèn)值病游。

其他瀏覽器:getComputedStyle屬于window

元素.getComputedStyle.樣式名=樣式值
參數(shù)1:獲取對(duì)象的元素
參數(shù)2:偽元素 null
返回對(duì)象稠通,封裝了修改過的樣式
如果元素的屬性為設(shè)置衬衬,并不會(huì)返回默認(rèn)值,而是返回實(shí)際值改橘。
比如div未設(shè)置寬佣耐,那么就會(huì)顯示實(shí)際的寬(數(shù)值),而不是currentStyle的anto
設(shè)置所有瀏覽器兼容的方式:

function getStyle(obj唧龄,name){
    if( getComputedStyle)
    //普通瀏覽器
    {
         return getComputedStyle(obg,null)[name];
    }
 
    //IE8以及以下
    else{
        return obj.currentStyle[name];
    }
}

正則表達(dá)式 (定義字符串的一些規(guī)則)

計(jì)算機(jī)根據(jù)正則表達(dá)式兼砖,判斷字符串是否符合規(guī)則,將符合條件的提取出來既棺。
可以理解為正則表達(dá)式就是規(guī)則。

 創(chuàng)建正則表達(dá)式對(duì)象:
 var patt=new RegExp("pattern","modifiers")
 var patt=new RegExp("正則表達(dá)式","匹配模式");
 使用字面量:
 var patt=/pattern/modifiers;

修飾符用于執(zhí)行不區(qū)分大小寫和全文的搜索。
i - 修飾符是用來執(zhí)行不區(qū)分大小寫的匹配。
g - 修飾符是用于執(zhí)行全文的搜索(而不是在找到第一個(gè)就停止查找,而是找到所有的匹配)。

var patt=new RegExp("a") 正則表達(dá)式可以檢查字符串中是否含有a
patt.test("bcd")
var patt= /a[bce]d/
patt.test("acd")

規(guī)則 :這里都是針對(duì)執(zhí)行一次的

[] 里面是或的關(guān)系
| 或的關(guān)系
[abc] 查找方括號(hào)之間的任何字符。
[a-z] 任意的小寫字母
[A-Z] 任意的大寫字母
[A-z] 任意的字母
[0-9] 查找任何從0至9的數(shù)字技即。
[^] 除了
(x|y) 查找由|分隔的任何選項(xiàng)澈歉。
正則表達(dá)式的方法:test ()檢查字符串是否符合正則表達(dá)式涡尘,符合:true
patt.test("字符串")

量詞:設(shè)置一個(gè)內(nèi)容的出現(xiàn)次數(shù) (只對(duì)前面的元素起作用)

{n} 正好出現(xiàn)n次
{m,n} 出現(xiàn)m-n次
{m,} m次以上

  • 至少一個(gè) 等同于{1川梅,}
    

^ 以……開頭
以……結(jié)尾 同時(shí)使用兩者秧倾,是很嚴(yán)格的。 n+ 匹配任何包含至少一個(gè) n 的字符串瞄摊。 n* 匹配任何包含零個(gè)或多個(gè) n 的字符串鹤啡。 n? 匹配任何包含零個(gè)或一個(gè) n 的字符串抖部。 n{X} 匹配包含 X 個(gè) n 的序列的字符串俯萎。 n{X,Y} 匹配包含 X 至 Y 個(gè) n 的序列的字符串撇眯。 n{X,} 匹配包含至少 X 個(gè) n 的序列的字符串来候。 n 匹配任何結(jié)尾為 n 的字符串转质。
^n 匹配任何開頭為 n 的字符串绑榴。
?=n 匹配任何其后緊接指定字符串 n 的字符串赤套。
?!n 匹配任何其后沒有緊接指定字符串 n 的字符串。

正則表達(dá)可以作為參數(shù)

split() 字符串拆分為數(shù)組 即使不指定全局,也會(huì)全部拆分
search():搜索字符串是否有指定內(nèi)容猿妈,有输瓜,返回第一次出現(xiàn)的索引,沒有旧蛾,就返回-1
str="ccf hello hhh polo friy"
res=str.search(/a[re]b/)
console.log(res)
match:提取符合條件的內(nèi)容
通常match只會(huì)找到第一個(gè)符合條件的內(nèi)容绍绘,找到后停止酌媒,設(shè)置全局搜索
str=[1a2b3c4d]
res=str.match(/a/gi)
replace():將字符串指定的內(nèi)容替換為新內(nèi)容
參數(shù)1:被替換的內(nèi)容 可以接受一個(gè)正則表達(dá)式
參數(shù)2: 新結(jié)果
默認(rèn)只會(huì)替換第一個(gè)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末特占,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子辟汰,更是在濱河造成了極大的恐慌,老刑警劉巖秧耗,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異弧械,居然都是意外死亡抖甘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門棕硫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來靶庙,“玉大人砚亭,你說我怎么就攤上這事署尤。” “怎么了镶殷?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵绽族,是天一觀的道長(zhǎng)岁诉。 經(jīng)常有香客問我距潘,道長(zhǎng)骚亿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮吃溅,結(jié)果婚禮上孽亲,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布鹅经。 她就那樣靜靜地躺著胖缤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪奋渔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天巡莹,我揣著相機(jī)與錄音降宅,去河邊找鬼东帅。 笑死芬为,一個(gè)胖子當(dāng)著我的面吹牛鼓拧,可吹牛的內(nèi)容都是我干的半火。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼季俩,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼钮糖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起酌住,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤店归,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后酪我,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體消痛,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年都哭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秩伞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逞带。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖纱新,靈堂內(nèi)的尸體忽然破棺而出展氓,到底是詐尸還是另有隱情,我是刑警寧澤怒炸,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布带饱,位于F島的核電站,受9級(jí)特大地震影響阅羹,放射性物質(zhì)發(fā)生泄漏勺疼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一捏鱼、第九天 我趴在偏房一處隱蔽的房頂上張望执庐。 院中可真熱鬧,春花似錦导梆、人聲如沸轨淌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)递鹉。三九已至,卻和暖如春藏斩,著一層夾襖步出監(jiān)牢的瞬間躏结,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工狰域, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留媳拴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓兆览,卻偏偏與公主長(zhǎng)得像屈溉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子抬探,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容