javascript对象

Posted Code_User

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript对象相关的知识,希望对你有一定的参考价值。

这个对象,不是那个对象,第三哦!

对象之间会存在继承,所以,来说一下他们之间存在的三种三种继承方式:

  1、冒用继承    

 1         //创建了孙悟空构造函数
 2             function Sun(change,weapon,gf){
 3                 this.change = change;
 4                 this.weapon = weapon;
 5                 this.gf = gf;
 6                 this.bianshen = function(){
 7                     alert("吃俺老孙一棒");
 8                 }
 9             }
10             
11             //给原型上添加一个方法
12             /*Sun.prototype.bianshen = function(){
13                 alert("吃俺老孙一棒");
14             }*/
15             
16             //创建猪八戒构造函数
17             function Zhubajie(name){//name是猪八戒自己单独有的属性
18                 this.name = name;
19                 //创建一个属性,属性值是Sun构造函数
20                 this.sun = Sun;
21                 this.sun("仙桃","金箍棒","紫霞仙子");
22                 delete this.sun;//删除掉这个属性
23             }
24             
25             var zbj = new Zhubajie("猪八戒");
26             
27             
28             zbj.bianshen();//方法可以使用
29             alert(zbj.weapon);
30             
31             
32             //zbj 和Sun  不是同一类型的
33             alert(zbj instanceof Sun); //false 

    这就是第一种继承方式。

    【注意】冒用继承缺点:不能使用原型上的方法和属性     优点:可以传递参数;

 

  2、原型继承

 1        function Dan(car,money,home){
 2                 this.car = car;
 3                 this.money = money;
 4                 this.home = home;
 5             }
 6             
 7             //发方法声明在原型对象上
 8             Dan.prototype.shoping = function (){
 9                 alert("买买买");
10             }
11             Dan.prototype.money = "5亿";
12             
13             //这个实例化对象是Dan的儿子,可以使用Dan的属性和方法
14             var son = new Dan("劳斯莱斯幻影","10亿","四合院");
15             
16             
17             //创建一个乞丐构造函数
18             function S(name){
19                 this.name = name;
20             }
21             
22             //让乞丐继承富豪的属性和方法
23             //把乞丐的构造函数原型修改成干爹的原型,这样,乞丐实例化对象就可以使用干爹的属性和方法。(两种方法)
24 //            S.prototype = Dan.prototype;
25             S.prototype = new Dan();
26             
27             //把S的原型对象constructor指针指回自己,否则会出问题
28             S.prototype.constructor = S;           
29             var s = new S("苏乞儿");
30             s.shoping();
31             alert(s.money);
32             
33             //判断s的爸爸是不是  Dan
34             alert(s instanceof Dan);//true  s 和  Dan不是一个东西 

    这种继承方式就是将新建的父类对象赋给子类构造函数的原型。

     【注意】原型链继承缺点:不能传递参数      优点:可以使用原型 上的方法 ;    

 

 

  3、混合继承 

 1       function Person(name,id,sex){
 2                 this.name = name;
 3                 this.id = id;
 4                 this.sex = sex;
 5                 this.think = function(ss){
 6                     alert(ss);
 7                 }
 8             }
 9             
10             Person.prototype.eat = function(){
11                 alert("呵呵");
12             }
13             
14             
15             
16             function XM(name,id,sex,clas){
17                 this.clas = clas;
18                 //call方法是用来继承用的。你想继承那个对性的属性,就要把属性传递进来;
19 //                Person.call(this,name,id,sex);
20                 
21                 //apply和call功能相同;
22                 //区别  call方法  参数要一个一个传,  apply方法可以传参数数组
23                 //优先选择apply方法使用
24                 Person.apply(this,arguments);
25             }
26             
27             //原型链继承  +  call/apply   叫混合继承
28             XM.prototype = new Person();
29             XM.prototype.constructor = XM;
30             
31             
32             var xiaoming = new XM("小明","12312112112332","男","一年级二班");
33             alert(xiaoming.name);//打印小明名字属性
34             xiaoming.think("坎坎坷坷");
35             
36             //现在有一个需要,让小明可以使用Person对象原型上的方法
37             xiaoming.eat();

    第三种方式就是 冒用继承 + 原型继承  ,既能继承父类的原型,完成复用,又能向父类传递参数。

    

    

 

    javascript所有的内容就到这里了,希望可以帮到大家!!!!!!

 

以上是关于javascript对象的主要内容,如果未能解决你的问题,请参考以下文章

常用Javascript代码片段集锦

VSCode自定义代码片段——JS中的面向对象编程

JavaScript单行代码,也就是代码片段

VSCode自定义代码片段9——JS中的面向对象编程

从 TypeScript 类型定义或 GraphQL 片段定义生成 JavaScript 空对象

30秒就能看懂的JavaScript 代码片段