js——面向对象

    科技2022-07-15  119

    1:什么是对象?

    a:对象就是由若干个键值对,无须组成的数据类型,被称之为对象。 b:简单理解,提供了特有的方法和属性就是对象! c:“对象”是一个容器,封装了“属性”(property)和“方法”(method)。 举例: var o={ name:'tom', age:12, fun:function(){ alert(1) } }

    2:键值对?

    花括号里面冒号前被称之为键,冒号后被称之为值,通过键获取值。

    3:什么是面向对象?

    面向对象是一种编程思想,通过这种思想来完成代码的编程。(oop==Object Oriented Programming)

    4:面向对象的特点?

    a、抽象: b、继承: c、封装: d、多态性:

    5:学习面向对象的优点?

    a:理解这种思想以后,我们可以自己创建一些方法和功能! b:可以给其他对象扩展方法

    6:什么是方法和属性,什么是函数和变量?

    变量:是自由自在一个数据; 属性:必须绑定在对象下面的数据; 函数:是一个代码块的集合; 方法:是绑定在某一个对象下面的函数

    7:工厂模式的写法

    1:在一个函数里面创建一个对象 2:给这个函数创建属性和方法 3:return返回对象 4:把函数赋值给一个变量,那么这个变量就拥有了函数的属性和方法 5:调用 举例: function person(name,age){ var o=new Object(); o.name=name; o.age=age; o.f=function(){ alert(this.name+this.age) } return o; } var o1=new person('tom',12) ; var o2=new person('jack',14) o1.f(); o2.f();

    8:工厂模式的优点:

    解决了同一个接口创建很多对象,会产生大量重复的代码的问题

    9:当函数被关键字 new 以后,那么这个函数就变成了对象,对象就可以共享自己的方法和属性!

    10:实例化和类,对象的概念

    function a(){ } var o=new a(); 对象:函数被关键字 new 以后就变成了对象 类:函数被关键字new完以后这个整体(new a())被称之为类 类的作用就是一个模具,通过这个模具可以复制很多对象。 实例化:函数被关键字 new完以后,赋值给一个变量的过程叫实例化 var o=new a(); 变量被实例化后,就拥有了函数对象里面的属性和方法。

    11:构造函数写法:

    举例: function Peop(name,age){ this.name=name; this.age=age; this.fun=function(){ alert(this.name+this.age); alert(this) } } var p1=new Peop('老栗',18) var p2=new Peop('小李',118) p1.fun(); p2.fun();

    12: 工厂模式和构造函数的区别?

    1:工厂模式的函数里面要创建一个对象,构造函数没有 2:工厂模式的函数里面要用return 返回,构造函数没有 3:工厂模式的函数赋值给变量的时候不用new 关键字,构造函数有 new 4: 工厂模式的函数不需this ,构造函数有this 5:构造函数的函数名首字母需要大写,工厂不需要

    13:读取属性的方式:

    举例: var o={ name:'老栗', age:18, } alert(o.name) alert(o['age'])

    14:删除属性方法

    删除属性的唯一方法是使用 delete 操作符; 设置属性为 undefined 或者 null 并不能真 正的删除属性, 而仅仅是移除了属性和值的关联。

    15:call()和apply()方法

    call()和apply()方法都具有改变this指向的作用,this这个时候指向的是call()方法里面的参数。

    16:原型是什么?

    a:prototype翻译过来叫原型。 b:prototype即是函数的属性,本身也是对象。 c:prototype存在于函数中。

    17:原型prototype的作用?

    原型prototype的作用就是可以共享。 通过prototype可以共享对象属性和方法!

    18:原型的写法:

    举例1: var arr1=new Array(1,2,3,4); var arr2=new Array(1,2,3,4,5); Array.prototype.jia=function(){ var r=0; for(var i=0; i<this.length; i++){ r+=this[i] } return r; } alert(arr1.jia()) alert(arr2.jia()) 举例2: function F(){ } F.prototype.name='老栗'; F.prototype.age=15; F.prototype.fun=function(){ alert(this.name+this.age) } var o1=new F(); var o2=new F(); o1.fun();//老栗15 o2.fun();//老栗15

    19: prototype constructor proto 三者之间的关系

    1:每一个函数都有一个prototype属性,但是prototype属性本身又是Obj类型的对象 因此我们可以通过prototype 给这个对象添加属性和方法 1.1 prototype的作用就是为了解决实例对象之间属性和方法的共用问题 2:prototype对于函数来说他是一个属性,但是对于实例对象来说他是一个对象,(他是本身也是一个对象) 构造函数通过这个属性就可以演化成原型对象,原型对象在通过关键字new给一个变量, 那么这个变量就是实例对象 3:constructor是prototype下面的一个属性 实例对象通过constructor 指向了函数 4:js中每一个对象都有自己的__proto__属性 实例化对象通过__proto__ 指向了原型对象

    20:原型+构造写法:

    原型+构造写法解决了想共享的写在prototype下面,不想共享的写在构造函数里面 function F(name,age){ this.name=name; this.age=age; } F.prototype.fun=function(){ alert(this.name+this.age) } var o1=new F('哈哈',12); var o2=new F('看看',122); o1.fun() o2.fun() alert(o1.fun==o2.fun)//true
    Processed: 0.015, SQL: 8