原型链

懵懵懂懂,好像是听懂了吧~~~

function fn(){
    var obj = {};
    obj.a = 10;
    obj.b = 20;
    obj.c = function(){
        return obj.a + obj.b; 
    }
}

数组是对象的子集,对象包含数组。

函数是对象的子集吗?

1.所有的函数都有prototype属性,该属性是一个对象。

2.所有的对象都有一个proto属性,该属性也是一个属性。

3.假如一个函数没有任何属性的话,prototype对象,默认有个constructor属性

function fn(){
    fn.prototype.name = 'labixiaoxin';
    fn.prototype.age = 4;
    fn.prototype.star = function(){

    }
}    

var fn2 = new fn();//fn2为子类,继承父类fn的一些属性

fn2.star();

1.从fn方法里面new出来一个实例;

2.将方法转化为对象。

__proto__ 指向创建当前对象的函数prototype
var fn = function(){};
var obj = new fn();

fn.prototype.age = 10;
fn.prototype.age = 100;

值类型//可以直接使用
var str = ‘123’;

引用类型//不能直接使用
var arr = [0,1,2];

var arr2 = [1,2,3,4]
var arr = new Array();
arr[0] = 1;
console.log(Array.prototype);

hasOwnProperty // 查看私有属性

this:

在全局作用域下调用this this指向global 也就是window;

new关键词创建的对象,this指向创建该对象的函数;

this当时的函数为对象属性的时候,this指向该对象。

var obj = {
    x :10;
    y :20;
    fn1 : function(){
        this.x = 20;
    }

}
obj.fn1();
console.log(obj.x);