/*1.方法调用模式:
先定义一个对象,然后在对象的属性中定义方法,通过myobject.property来执行方法,this即指当前的myobject
对象。*/
var car = {
carId:123,
carName:"奥迪",
carColor:"red",
say:function(){
console.log(this.carName+" color is "+this.carColor);
}
};
car.say(); /*2.函数调用模式
定义一个函数,设置一个变量名保存函数,这时this指向到window对象。*/
var mycar = function(name,color){
  return "my car is " +color+" and "+name ;
}
console.log(mycar("奥迪","红色")); /*3.构造器调用模式
定义一个函数对象,在对象中定义属性,在其原型对象中定义方法。在使用prototype的方法时,必须实例化该对象才能调用其方法。*/
var yourcar = function(name,color){
this.name = name;
this.color = color;
};
yourcar.prototype ={
say:function(){
console.log("your car is " +this.name + " and " +this.color);
}
};
var yourcar = new yourcar("奔驰","蓝色");
yourcar.say(); /*4.apply,call调用模式*/
function count(num1, num2) {
return num1 + num2;
}
console.log(count.call(window, 10, 10)); //20
console.log(count.apply(window,[10,20])); //30 window.a=100;
window.b=300;
var myobject={a:40,b:50};
var sum = function(){
  return this.a+this.b;
};
var sum1 = sum.call(window);
// var sum2 = sum.call(myobject);
var sum2 = sum.apply(myobject);
console.log(sum1+"========="+sum2); // 发现apply()和call()的真正用武之地是能够扩充函数赖以运行的作用域,如果我们想用传统的方法实现
window.a=100;
window.b=300;
var myobject={a:40,b:50};
function sum(){
console.log(this.a+this.b);
}
console.log(sum());
myobject.sumnumber = sum;
console.log(myobject.sumnumber()); window.color = "red";
var o = { color: "blue" };
function sayColor(){
console.log(this.color);
}
sayColor();
var OSayColor = sayColor.bind(o);
OSayColor(); //blue

js 定义函数的几种方法 以及如何调用的更多相关文章

  1. js function定义函数的4种方法

    js function定义函数的4种方法 1.最基本的作为一个本本分分的函数声明使用. 复制代码代码如下: 复制代码代码如下: function func(){} 或 var func=functio ...

  2. JS定义函数的2种方式以及区别简述(为什么推荐第二种方式)

     无意中看到了阮一峰大神多年前的一篇博客: 12种不宜使用的Javascript语法    看到第9条的时候受到了启发,感觉之前没怎么理解清楚的一些问题好像突然就清晰了,如下图 可能光这样看,有些小伙 ...

  3. 【JS】<a>标签调用js中函数的几种方法

    我们常用的在a标签中有点击事件: a href="javascript:js_method();" 这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问题,而 ...

  4. javascript函数 (二 定义函数的三种方法)

    javascript定义函数(声明函数)可以有三种方法:正常方法.构造函数.函数直接量 <html><head></head><body> <sc ...

  5. js定义函数的几种结构形式

    1.函数声明 function name(参数) { 执行的代码 } 2.函数表达式 也称匿名函数 var x = function (参数) { 执行的代码 }; //第二种方式按照完整的语法需要在 ...

  6. JS定义函数的两种方式:函数声明和函数表达式

    函数声明 关于函数声明的方式,它的一个重要的特性就是函数声明提升(function declaration hoisting),意思是在执行代码之前会先读取函数声明.这就意味着可以把函数声明放在调用它 ...

  7. 转载 jQuery和js自定义函数和文件的方法(全网最全)

    jQuery和js自定义函数和文件的方法(全网最全)    版权声明:本文为像雾像雨又像风_http://blog.csdn.net/topdandan的原创文章,未经允许不得转载. https:// ...

  8. js定义对象的几种容易犯的错误

    //js定义对象的几种容易犯的错误function Person() { getName = function (){ console.info(1); }; return this;}//Perso ...

  9. [转]Javascript定义类的三种方法

    作者: 阮一峰 原文地址:http://www.ruanyifeng.com/blog/2012/07/three_ways_to_define_a_javascript_class.html 将近2 ...

随机推荐

  1. Python数据类型list(列表)和tuple(元组)

    list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ...

  2. Python hashlib模块 (主要记录md5加密)

    python提供了一个进行hash加密的模块:hashlib 下面主要记录下其中的md5加密方式(sha1加密一样把MD5换成sha1) >>> import hashlib > ...

  3. C语言到底怎么分配空间

    程序分为:代码区.数据区.bss区.堆区.栈区.平时常用区分的是代码区.堆区.栈区.下面加上例子区分一下. 3 代码区顾名思义就是存放代码的,里面的内容是不可以修改的.例如你定义了一个变量char * ...

  4. POJ 3356(最短编辑距离问题)

    POJ - 3356 AGTC Time Limit: 1000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u Desc ...

  5. bzoj2071: [POI2004]JAS

    Description 在Byteotia有一个洞穴. 它包含n 个洞室和一些隧道连接他们. 每个洞室之间只有一条唯一的路径连接他们. Hansel 在其中一个洞室藏了宝藏, 但是它不会说出它在哪. ...

  6. C#编写的序列化通用类代码

    using System; using System.IO; using System.IO.Compression; using System.Runtime.Serialization.Forma ...

  7. 使用Protractor进行AngularJS e2e测试案例

    环境: y@y:karma-t01$ protractor --version Version y@y:karma-t01$ node -v v4.2.2 y@y:karma-t01$ y@y:kar ...

  8. Currency Exchange

    主要找正环: #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm& ...

  9. HiveServer连接优化

    引言   数据平台目前通过Hive SQL的方式提供数据分析服务,系统使用多台HiveServer(JDBCServer)接收客户端连接请求,实际使用场景中频频出现HiveServer内存消耗过多导致 ...

  10. 【中国剩余定理】【容斥原理】【快速乘法】【数论】HDU 5768 Lucky7

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5768 题目大意: T组数据,求L~R中满足:1.是7的倍数,2.对n个素数有 %pi!=ai  的数 ...