learn javascript中文版,笔记总结————呱呱二号

看完这pdf以后,明白了挺多关于javascript的一些疑问。javascript

 

一、==和===区别php

var foo = 42;java

var bar = 42;编程

var baz = "42";数组

var qux = "life";浏览器

foo == bar 将断定为 true ,而 baz == qux 将断定为 false 。然而,尽 管 foo 和 baz 是不一样类型, foo == baz 也将断定为 true 。安全

== 等性运 算符在判断等价性以前会尝试强制将操做数转为相同类型。这与 === 全等运算符 不一样。闭包

=== 全等运算符判断两个变量是否类型和值 都 相等。在这种状况下, foo === bar 仍然是 true , 而 foo === baz 将为 false . baz === qux 仍为 false .app

 

二、以前有试过判断 11和11.0是否相等(===和==)?可是等到结果是相等(true)的。缘由以下编程语言

JavaScript的数字只有一种类型 - 64位浮点数。这相似于Java的 'double'。不一样于 其余编程语言,这里不须要区分整数类型,因此 1 和 1.0 是相同值。 在这章节,咱们将学习如何建立数字和使用运算符(好比加减)。

 

三、声明变量前不须要声明数据类型?

JavaScript是一种 “弱类型” 语言, 这意味着你不须要明确的声明变量的数据类型。 你只需用 var 关键词来暗示你正在声明一个变量,解释器会从上下文(和引号)得出 你用的是什么数据类型,

 

四、javascript字符串链接是使用 +     php 使用 . 

 

五、编程思想

条件语句能够用来测试。条件判断在编程中很是重要,好比:

首先,不管程序运行使用什么数据,全部的条件都能被用来肯定程序是否正常。如 果盲目的相信数据,你将陷入程序出错的麻烦。若是测试有效而且所需信息格式正 确,程序就不会出错,还会变得更稳定。采起这种预防措施的行为被称做防护性编 程。

 

六、获取字符串长度和数组的元素个数的方法:.length

var charLength = 'hello world'.length;

var arrLength = [1,2,3,4,6].length;

 

七、函数的两种形式:声明函数和函数表达式

 

函数声明,

sayHello();  能够在函数声明以前调用函数,由于javascript有一个函数声明提早的机制。

function sayHello(){

  console.log('hello world');

}

 

函数表达式

var sayHello = function(){

  console.log('hello world');

}

 

八、javascript的对象

对象 Javascript的原始类型是 true , false , 数字, 字符串, null and undefined 。全部其余值都是 对象 . Javascript对象包含成对的 propertyName(属性名) : propertyValue(属性 值) 。

建立对象的方式有两种:

字面上:

var obj = {};

面向对象:

var obj = new Object();

 

var language = {

  name: 'JavaScript',

  isSupportedByBrowsers: true,

  createdIn: 1995,

  author:{

    firstName: 'Brendan',

    lastName: 'Eich'

  }, // 是的,对象能够嵌套!

  getAuthorFullName: function(){

    return this.author.firstName + " " + this.author.lastName;

  } // 是的,函数能够有值!

};

 

对象是不会被复制的。它们的传递靠引用。

 

var myPizza = {slices: 5};
var yourPizza = myPizza;
myPizza.slices = myPizza.slices - 1;
console.log(myPizza.slices);  //4

 

var a = {}, b = {}, c = {}; // a, b, 和 c 都引用不一样的空对象

a = b = c = {}; // a, b, 和 c 都引用同一个空对象

 

九、原型相关的知识

每一个对象都与对象原型关联,继承了对象原型的属性。

全部对象建立时都从字面量对象( {} )继承,且都自动连接到的 Object.prototype,Object.prototype 来自JavaScript标准。

当JavaScript解释器(在浏览器中一个模块),试图找到一个属性,它要检索,如 下面的代码:

var adult = {age: 26},

  retrievedProperty = adult.age;

  // 看上一行 

首先,解释器检查对象有的每一个属性。例如, adult 只有一个本身的属性 - age 。

可是,除此以外,实际上还有几个属性,这是继承自Object.prototype。

var stringRepresentation = adult.toString(); // 变量的值为 '[object Object]'

toString 是一个 Object.prototype 的属性, 这是继承。它有一个函数,

返回值为 一个对象的字符串。若是但愿它返回一个更有意义的东西,

那么你能够将其覆盖。 简单的添加一个属性到adult对象。

adult.toString = function(){

   return "I'm "+this.age;

}

若是如今调用 toString 函数,解释器将发现一个新的对象中的属性而后中止。

解释器解析某个属性时会先检查对象本身,再进一步检查他的原型。

要设置本身的对象为原型而不是默认的Object.prototype,你能够调用如下 的 Object.create :

 

var child = Object.create(adult);

/* 经过这种方式建立的对象可让咱们轻松

替换默认的Object.prototype成咱们想要的。

在这里,child的原型是adult对象。 */

child.age = 8;

/* 在此以前,child根本没有本身的年龄属性,

解释器会寻找child的原型中是否有该属性。

如今,当咱们设置了child自身年龄,解释器

就不深刻寻找了。 注意:adult的年龄仍为26。 */

var stringRepresentation = child.toString(); // 值为 "I'm 8"。

/* 注意:咱们没覆盖child的toString属性,

所以adult类函数不会被调用。若是adult没有toString属性,

那么Object.prototype的toString类函数将被调用,

咱们将获得"[object Object]" 而不是 "I'm 8" 。 */

 

child '的原型是 adult ,其原型为 Object.prototype 。这一系列原型被称为 原型链。

 

十、销毁:

delete 被用来从一个对象中 删除一个属性 。它将删除对象中的一个存在属性, 使其再也不存在于原型链中。

从一个对象中删除一个属性就是将改属性从原型中移 出:

 

var adult = {age: 26}

  child = Object.create(adult);

  child.age = age

delete child.age;

  /* 从child中删除age属性,代表这以后该属性不在被覆盖 */

var prototypeAge = child.age;

   // 26,由于该孩子没有本身的age属性。

从上知,child的原型是 adult,而adult的原型是Object.prototype,child的属性age被销毁,那就会到它的原型中找age这个属性,由于adult的age属性是26,因此是26

 

十一、枚举

枚举 for in 语句能够遍历对象中全部的属性。枚举包括函数和原型属性。

var fruit = { apple: 2, orange:5, pear:1 },

  sentence = 'I have ', quantity;

for (kind in fruit){  

  quantity = fruit[kind];

   sentence += quantity+' '+kind+ (quantity===1?'':'s')+ ', ';

}  // The following line removes the trailing coma.

sentence = sentence.substr(0,sentence.length-2)+'.';

  // I have 2 apples, 5 oranges, 1 pear.

 

十二、全局化

若是想开发一个模块,它能够在网页上运行或也能够运行其余模块,

所以你必须注 意变量名是否重复。 假设咱们正在卡开发一个计数器模块:

  var myCounter = {

    number : 0,

    plusPlus : function(){

      this.number : this.number + 1;

     },

    isGreaterThanTen : function(){

      return this.number > 10;

    }

}

注意: 这个技巧一般配合闭包使用,以使来自外部的内部状态不变。

模块使用惟一一个变量名 — myCounter 。若是其余模块使用名字好比 number 或 isGreaterThanTen ,

这样就会很安全,由于不会覆盖每一个其余的值。

 

learn javascript 中文版pdf  百度云盘:  http://pan.baidu.com/s/1gftPLmV           kn3y      传送门

相关文章
相关标签/搜索