javascript的简单类型包括数字、字符、布尔值、null值和undefined值。
其他的类型都是对象。
对象是可变的键控集合。在javascript中,数组是对象,函数是对象,正则表达式是对象,对象自然也是对象。
对象是属性的容器,其中每个属性都拥有名字和值。
属性的名字可以是包括空字符串的任何字符串。属性的值可以是除了undefined之外的任意值
javascript的对象是无类别。它对新属性的名字和值没有约束。对象适合用于收集和管理数据。对象可以包含其他对象,
所以它们可以容易地表示成树形或者图形结构。
javascript包括一个原型链特性,允许对象继承另一对象的属性。
对象字面量
对象字面量提供了一种非常方便地创建新对象值的表示法。
var empty_object={};
原型
每个对象都连接到一个原型对象,并且它可以从中继承属性。
所有通过对象字面量创建的对象都连接到Object.prototype这个javascript种标准的对象。
枚举
for in 语句可用来遍历一个对象中的所有属性名。该枚举过程会列出所有的属性(包括原型中的属性)
一般使用hasOwnProperty方法和typeof来过滤
函数对象
在javascript中函数就是对象。对象是“名/值”对的集合并拥有一个连到原型对象的隐藏链接.
对象字面量产生的对象链接到 Object.prototype。 函数对象连接到 Function.prototype(该
原型对象本身连接到 Object.prototype).
每个函数在创建时有两个附加的隐藏属性: 函数的上下文和实现函数行为的代码.
每个函数对象在创建时也随带一个prototype属性。
它的值(函数对象的实例)是一个拥有constructor属性并且值即为该函数的对象。
调用
调用一个函数将暂停执行当前的函数。每个函数接收两个附加的参数:this和arguments。
this在面向对象编程中非常重要, 它的值取决于调用的模式(方法调用模式、函数调用模式、构造器调用模式、
apply调用模式)
方法调用模式 : 当一个函数保存为对象的一个属性时。我们称它为一个方法。this对象即为该对象
函数调用模式 : 当一个函数并非一个对象的属性时,那么它被当做一个函数来调用
构造器调用模式:如果在一个函数前面带上new来调用,那么将创建一个隐藏链接到该函数的 prototype 成员的新对象
,同时 this 将被绑定到那个新对象上
Apply调用模式
返回
一个函数总是会返回一个值。如果没有使用return指定返回,则返回undefined。
使用return语句,则return语句之后的代码不执行。
深入了解原型链、类型等
源码:
><html xmlns="http://www.w3.org/1999/xhtml" ><head><title></title><script type="text/javascript">window.onload = function() {var div_show = document.getElementById("div_show");Object.prototype.objprototype = function() { }Function.prototype.fnprototype = function() { }Function.fnStaticfunction = function() { }function people() {this.sex = 0;this.age = 1;this.getName = function() { }}people.eat = function() { };var p = new people();for (var i in people.prototype) {div_show.innerHTML += "peopleprototype: " + i + "<br>";}div_show.innerHTML += "<br>";for (var i in p) {div_show.innerHTML += "peopleinstance: " + i + "<br>";}div_show.innerHTML += "<br>";for (var i in people) {div_show.innerHTML += "people: " + i + "<br>";}div_show.innerHTML += "<br>";function asia() { }asia.StaticeatEastFood = function() { }asia.prototype = new people();asia.prototype.eatEastFoodPrototype = function() { }var asian = new asia();for (var i in asian) {div_show.innerHTML += "asian: " + i + "<br>";}div_show.innerHTML += "<br>";for (var i in asia) {div_show.innerHTML += "asia: " + i + "<br>";}div_show.innerHTML += "<br>";for (var i in asia.prototype) {div_show.innerHTML += "asia: " + i + "<br>";}var stooge = {"first-name": "J","last-name": "H",getName: function() { }}div_show.innerHTML += "<br>";for (var i in stooge) {div_show.innerHTML += "stooge: " + i + "<br>";}Function.prototype.method = function(name, value) {this.prototype[name] = value;}Number.method("getss", function() { });}</script></head><body><div id="div_show"></div></body></html>