javaScript面向对象

js解析过程:

  1. 全局:
    1. 预处理阶段 :
      1. 先扫描函数声明后扫描变量(var声明)
        1.   处理函数声明有冲突,会覆盖
        2.   处理变量声明时有冲突,会忽略
    2. 执行阶段
    3. 测试
  2. 函数
    1. 预处理阶段
      1. 每调用一次,产生一个LexicalEnvironment
      2. 先函数的参数
        1. 一些语言提供的对象,比如arguments等
        2. 参数有传,那么就有值,没有就是undefined
        3. 如果多个函数参数名字一样,那么最后一个的优先级最高
      3. 内部声明式函数
      4. 内部var变量
      5. 冲突情况与全局处理一样
    2. 执行阶段
      1. 给预处理阶段的成员赋值
      2. 如果没有用var声明的变量,会成为最外部LexicalEnvironment的成员

    

      总结javascript OOP 创建对象 

       

面向对象,创建对象。健值对。
属性名可以为字符串。

一、 js的两大特性:

1、弱类型

2、动态性
弱类型的编程语言,比如javascript,ruby

var a = 5;
a = "abcd";
动态性:运行时可变化,比如对象可以动态的添加成员
var a = {};
a.name = "zss"; //属性 ps:创建时没有属性。
a.work = function(){
alert(this.name);
}
a.work();


二、instanceof:运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外 一个要检测对象的原型链上

三、Constructor 构造函数:
//方法名首字母大写。表示不是用来调用方法。是用来创建属性
function Person(name,age){

this.myname = name ;
this.age = age ;
}
var p1 = new Persion("xuewei",18);
p1.length = 18 ;
alert(p1.name);
alert(p1.age)
alert(p1.length);

四、new的简单理解:

自定义对象和构造型函数区别
自定义对象
eg: var xxxx ;
构造型函数
eg:function XXX(name){
}
var aaa = new XXX();
1、构造型函数可以创建多个对象、自定义对象只能有一个
2、构造型函数,函数里可以写代码

一: this
在javascript中this表示:谁调用它,this就是谁.
javaScript是由对象组成的,一切皆为对象,万事皆为对象。this是一个动态的对象,根据调用的对象不同而发生变化,当然也可以call、apply修改this指向的对象。它代表函数运行时,自动生成的一个内部对象,只能函数内部使用
1.1、 JavaScript中函数与方法的区别
在面向过程的语言中我们习惯把完成某个特定的功能的代码块称为“函数”或“过程”,当然过程一般没有返回值。在面向对象语言中我们把对象的功能称为“方法”。把JavaSctipt是种介于面向对象与面向过程中间的语言,同样的方法有时是函数,有时是方法,如下所示

function show(){
console.log("这是一个函数");
}

(function(){
console.log("这是一个函数表达式");
})();

var obj={
show:function(){
console.log(这是一个方法);
}
}

function obj2(){ //obj2是函数,构造函数
this.show=function(){
console.log("这是一个方法,是一个表达式");
}
}
var obj3=new obj2();

第三章:
js处理阶段

一、在预处理的阶段
eg:var a = 1;
function f(){
alert(a);
var a = 5;
}f();
var a = 1;
function f(){
alert(a);
a = 8;
}f();

1.1:读取分析整个源代码
1.2:找出所有用var声明的变量以及用声明的方式创建的函数
1.3:把第二步找出来的东西添加到一个对象里面去(如果是全局代码,这 个对象就是windows)
1.4:如果变量,那么值此时就等于undefined,如果是函数,此时的值就指向函数
全局代码的执行:(在我们的案例里面)
1.1:把a的值从undefined改为1
1.2:调用f函数,以便f函数得到执行

预处理阶段:
1.1:把函数的参数添加到一个对象(词法对象)
1.2:把所有var声明的变量以及声明的形式创建的函数添加到词法对象里面。变量的值就undefined

eg:function f(a,d){ }f(1); //声明的时候参数个数与实际调用时无关

js当中 foreach循环 :eg
var arr= [1,2,3];
for(var a in arr){
alert(arr[a]);
}

js继承
//用过原型继承
var
Object.prototype = parrnt;//这行代码理论上是可以完成的
//但是因为Object.prototype是只读,你不能赋值
//所以不能改

_Proto_和prototype的区别关系
_proto_(隐式原型)与prototyep(显示原型)
_隐式的原型的作用:
构成原型链,同样用于实现基于原型的继承举个例子
当我们需要访问一个学生这个对象中的某个属性,如
果在学生中找不到,那么就会沿着_proto_依次查找。
显示原型的作用:
用于实现基于原型的继承与属性的共享。

      

    

      

posted @ 2017-11-26 20:46  丶趁年轻  阅读(137)  评论(0)    收藏  举报