看完这几个下例子,会对学习js有所帮助
1、小猫和小狗

function food(){}
food.prototype={
food:'fish',
say:function(){
console.log('i love '+this.food);
}
}
var blackCat=new food();
blackCat.say(); //blackCat会说,i love fish //如果又来了一只小狗,小狗喜欢吃骨头,但又不想改变food的方法
var dog={food:'boon'};
blackCat.say.call(dog); //那么小狗就会说,i love boon

2、我想要什么动物就要什么动物

    function Animal() {                     //是什么小动物就叫什么名字
this.showName = function() {
console.log(this.name);
}
} function Person(name) {
this.name = null;
this.Init = function(name) {
this.name = name;
}
this.Init(name);
}; var nameShowing = new Animal();
var dark = new Person("我是小鸭"); //想生产什么就生产什么
var chick = new Person("我是小鸡"); //想生产什么就生产什么
nameShowing.showName.call(dark); //我是小鸭
nameShowing.showName.call(chick); //我是小鸡

比较上面的方法,一锅端的方式,全部继承,本质一样

    function Animal() {                     //是什么小动物就叫什么名字
this.showName = function() {
console.log(this.name);
}
} function Person(name) {
this.name = null;
this.Init = function(name) {
this.name = name;
}
this.Init(name);
}; /* var nameShowing = new Animal();
var chick = new Person("我是小鸭子"); //想生产什么就生产什么
nameShowing.showName.call(chick); //我是小鸭*/ var chick = new Person("我是小鸭子");
Animal.call(chick);
chick.showName(); //我是小鸭子

3、用一个空对象来模仿

    function Person(name, age){
this.name = null;
this.age = null;
this.showPersonInfo = function(){
document.write("Name: " + this.name + "<br>");
document.write("Age: " + this.age + "<br>");
};
this.Init = function(){
this.name = name;
this.age = age;
};
this.Init();
this.aaa=123;
} var animal = new Object();
Person.call(animal, "小鸭子", 18); //animal具有了animal的属性和方法,不包含原型中的

4、实现继承,之前已经写过了,这里就不写了

5、借用其他对象的方法

//判断是否是一个数组
var s=[1,2,3];
Object.prototype.toString.call(s);
//"[object Array]"
//利用Math.max来取数组最大值
Math.max.apply(null,[1,2,5]) //
//借用Array.prototype对象上的方法,往arguments中添加一个新的元素,通常会借用Array.prototye.push方法
(function(){
Array.prototype.push.call(arguments,3)
console.log(arguments)
})(1,2) //[1,2,3]
//利用数组push方法,把任意对象传入值 Array.prototype.push
var a={};
Array.prototype.push.call(a,"frist");
a[0]; //frish
a.length; //
//借用Array.prototype.slice方法,把arguments转成真正的数组
(function(){
Array.prototype.slice.call(arguments)
console.log(arguments)
})(1,2) //[1,2]
//截去arguments列表的头一个元素,可以借用Array.prototype.shift方法
(function(){
Array.prototype.shift.call(arguments)
console.log(arguments)
})(1,2) //[2]

@

call经常用到的地方的更多相关文章

  1. 解决VS2008在win7找不到输入序列号的地方

    1.VS2008在Windows7 打开维护界面看不到可以输序列号的地方. 因为微软把他隐藏了. 2.我们可以借用工具把他显示出来 下载地址:http://www.zlsoft.com/techbbs ...

  2. 使用Google Closure Compiler高级压缩Javascript代码注意的几个地方

    介绍 GCC(Google Closure Compiler)是由谷歌发布的Js代码压缩编译工具.它可以做到分析Js的代码,移除不需要的代码(dead code),并且去重写它,最后再进行压缩. 三种 ...

  3. eclipse项目上面有个红叉,但是没有任何地方有错误

    eclipse项目上面有个红叉,但是没有任何地方有错误,clear,refresh,重启都试过了,依然没用, 后来我换了一个workspace,编译的时候提示: Description Resourc ...

  4. javascript中的一些核心知识点以及需要注意的地方

    前言 近期杂事甚多,这些事情的积累对知识体系的提升有好处,但是却不能整理出来,也整理不出来 比如说我最近研究的Hybrid在线联调方案便过于依赖于业务,就算分享也不会有人读懂,若是抽一点来分享又意义不 ...

  5. android 实现点击listview 空白地方隐藏菜单

    思路:重写ListView的setOnTouchListener事件: ListView.setOnTouchListener(new OnTouchListener(){ @Override pub ...

  6. java 将一张图片拷贝到另外一个地方。(IO流)

    package com.beiwo.inputstream; import java.io.FileInputStream; import java.io.FileOutputStream; impo ...

  7. 屌丝程序员的梦想 (二) 屌丝IT梦开始地方

    校区的周围有很多的网吧,一个对电子游戏迷恋了许久的青少年来说,那绝对是不可不去的地方,键盘,鼠标,显示器,那一切看起来都那么完美,那么似曾相识,是啊,魂牵梦绕的IT梦...哦..当时那只是电子游戏梦. ...

  8. es6还欠完善的地方

    const的可变性 const用于声明常量. 什么是常量,声明后的值不可更改. 对于值类型,比如string,number等等.const声明确实有效. const str = "strin ...

  9. js平滑滚动到顶部,底部,指定地方

    [原文链接] 采用锚点进行页面中的跳转的确很方便,但是要想增加网页的效果,可以使用jquery中的animate,实现滚动的一个动作,慢慢的滚动到你想跳转到的位置,从而看起来会非常高大上. [示例演示 ...

  10. Matlab中fread函数的高级使用方法及其帮助文档中容易引起歧义的地方

    参考资料:http://cn.mathworks.com/help/matlab/ref/fread.html 注意:参考资料针对的Matlab版本号R2015a,我使用的是R2013b. Matla ...

随机推荐

  1. linux 下如何 makefile

    本文目的: 尝试着把makefile讲解清楚.非原创,仅仅是学习笔记和备忘录之用. makefile 的目的和好处: 一个工程中的源文件不计数,其按类型.功能.模块分别放在若干个目录中,makefil ...

  2. Jquery AJAX ASP.NET IIS 跨域 超简单解决办法

    第一种: 在IIS添加如下标头即可 Access-Control-Allow-Headers:Content-Type, api_key, AuthorizationAccess-Control-Al ...

  3. IntelliJ IDEA 14 注册码

    IntelliJ IDEA 14 下载地址: IntelliJ IDEA 14 下载 分享几个license: (1) key:IDEA value:61156-YRN2M-5MNCN-NZ8D2-7 ...

  4. DIV的Position属性和DIV嵌套DIV

    1.前言 我们在利用div+css进行布局时,常常被div的位置弄的焦头烂额,很多人甚至放弃了div而直接用table.这里一如既往的推荐使用div布局,其实我们只要掌握了div的position属性 ...

  5. DB2数据库参数建议(Linux)

    内核参数配置: kernel.shmall=<物理内存的90%,以页为单位> kernel.shmax=<实际的物理内存> kernel.shmmni= kernel.msgm ...

  6. StringTemplate初步使用

    例子1: private static void test_1(String[] args) throws Exception { ST hello = new ST("Hello, < ...

  7. HUAS_ACM 个人训练#2 C

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=117538#problem/C 题目大意:给出一个字符串,然后给出一系列的x,y ...

  8. STL之list

    list是一个线性链表结构,它的数据由若干个节点构成,每一个节点都包括一个信息块,一个前驱指针和一个后驱指针.它无需分配指定的内存大小且可以任意伸缩,这是因为它存储在非连续的内存空间中,并且由指针将有 ...

  9. 最难面试的IT公司之ThoughtWorks代码挑战——FizzBuzzWhizz游戏

    最近互联网招聘平台拉勾网在五一期间推出个“最难面试的IT公司”代码挑战活动,评选出了5个最难面试的IT公司,即:ThoughtWorks.Google.Unisys.Rackspace.Cypress ...

  10. canvas中的rotate的使用方法

    今天在绘制一个足球滚动的时候,想使用rotate方法,之前看到这个方法的时候,并没有引起任何重视,无非就是和CSS3里的rotate一样的用么... 遗憾的是,事实并非如此,由于代码在公司,我也就不去 ...