利用原型共享数据

141 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

利用原型共享数据

1、为内置对象添加原型方法

var arr=new Array(10,20,30,40,50);

arr.join("|");

console.dir(arr);


var str=new String("哦,唛嘎的");

str.indexOf("哦");

console.dir(str);


var dt=new Date();

dt.getFullYear();

console.dir(dt);

// 实例中的方法如果没有,去创建该实例对象的构造函数的原型对象中找

// 我们能否为系统的对象的原型中添加方法,相当于在改变源码

// 希望字符串中有一个倒序字符串的方法,因此我们可以在其原型上去添加一个属性方法

String.prototype.myReverse=function () {

    for(var i=this.length-1;i>=0;i--){

        console.log(this[i]);

    }

};

var str="abcdefg";

// 这样我们可以通过调用自定义的方法进行数据操作

str.myReverse();

// 为Array内置对象的原型对象中添加方法

Array.prototype.mySort=function () {

    for(var i=0;i<this.length-1;i++){

        for(var j=0;j<this.length-1-i;j++){

            if(this[j]<this[j+1]){

                var temp=this[j];

                this[j]=this[j+1];

                this[j+1]=temp;

            }

        }

    }

};

var arr=[100,3,56,78,23,10];

arr.mySort();

console.log(arr);

String.prototype.sayHi=function () {

    console.log(this+"菜鸟,不要停止学习");

};

//字符串就有了打招呼的方法

var str2="景轩";

str2.sayHi();

2、原型对象中的方法,可以相互调用

function Person(age) {

    this.age=age;

    this.sayHi=function () {

         console.log("考尼奇瓦");

        //打招呼的同时,直接调用吃的方法

    };

    this.eat=function () {

        console.log("吃东西啦");

        this.sayHi(); // 可以访问到对象中方法

    };

}

//实例对象的方法,是可以相互调用的

//实例化一个对象,并初始化

var per=new Person(20);

//调用方法

//per.sayHi();

per.eat(); // 吃东西啦

//原型中的方法,是可以相互访问的

function Animal(name,age) {

    this.name=name;

    this.age=age;

}

//在原型中添加相关方法

Animal.prototype.eat=function () {

    console.log("动物吃东西");

    this.play();

};

Animal.prototype.play=function () {

    console.log("玩");

    this.sleep();

};

Animal.prototype.sleep=function () {

    console.log("睡觉了");

};

var dog=new Animal("苏哲",38);

// 原型上的方法可以相互调用
dog.eat();