1.任何函数都是有返回值的,没有返回值的,在某些语言里称之为过程例如PL/SQL

2.js中的函数如果没有return 关键字指明给出的返回值,那么当调用完函数后,会返回“undefined"关键字

3.js中传递的参数不会检测类型,如果对类型十分明确,请用typeof()来对传入的参数进行检测。

4这种匿名函数会在生成后,直接调用:

alert((function(x){return x*x})(10));

格式大概为:第一个括号内包含函数定义,第二个括号为传入函数的参数。

5.参数的设定可以可选,如果参数可选了,那么应该为其摄人一个默认值,可选的参数最后在参数列表的最后一位。

function copyPropertype(object, array) {
array = array || [];
for (var propertype in object) {
array.push(propertype)
}
}

6.arguments,arguments是一个标识符,不是保留字,如果在函数体内定义了相同的变量名,那么会隐藏对arguements的引用。同时也要注意到arguments是一个类似于数组的对象。对命名参数的引用可以使用参数名也可以使用argument[n]的方式来进行引用。

  callee属性,用来引用这在执行的函数,允许对没有命名的函数递归的调用自身例如:

function (x) {
if (x <= 1) return 1;
return x * arguments.callee(x - 1);
}

7.为了便于对函数的调用,可以把函数的参数看为一个对象,然后通过对对象的属性,来获取穿入的值,这样就便于进行对函数的调用。

function arraySort(fromArr, fromStart, toArr, toStart, length) {
//do something
}
function userObject(args){
arraySort({
args.fromArr,
   args.fromStart,
   args.toArr,
   args.toStart,
   args.length
})
}

8.在js中,函数不仅可以被定义跟调用,而且它还是一种数据类型,因此函数还能被赋值给某个变量。函数的函数名并没有什么意义,它只是用来引用函数的变量名而已。

  函数不仅可以赋值给全局变量外,还能赋值给某个对象的属性,通过属性来调用函数。

  函数可以没有函数名,只要有保存该函数的引用的位置即可。例如array[0]=function(){};

9.在方法中,用来调用方法的对象成为this的指向

var obj = {
oper1: 1,
oper2: 1,
result: function () {
return this.oper1 + this.oper2;
}
};

10.当一个函数而不是对象的方法而言,this的指向总是全局变量。例如:

var name = "out";
function getName() {
var name = "in1";
function getInName() {
var name = "in2";
return this.name;
}
alert("嵌套函数:" + getInName());
return this.name;
}
alert(getName());
alert(obj.result());

11.函数是一个对象。具有对象的属性跟方法。

  11.1length属性。该属性只读。该属性与arguments.length不同,该属性时函数需要传递的参数的个数,具体为,函数定义时的参数个数。而arguments.length则是函数调用时传递进来的参数的个数。

function check(args) {
alert(args.length);
alert(args.callee.length);
};
function f(x, y, z) {
check(arguments);
};
f(1, 2);

  实际需要3个,但是只传入了2个。

  11.2.可以定义自己的函数属性。如果该函数在使用过程中有一个保值不变的值,Function的属性定义比全局变量更加方便。

function func() {
return func.count++;
}
func.count = 1;
alert(func());
alert(func());

12.子类,超类。

  

function rect(w, h) {
this.width = w;
this.height = h;
}
rect.prototype.area = function () {
return this.x * this.y;
}
function PositionRect(x, y, w, h) {
//这个是调用rect的构造方法
rect.call(this, w, h);
this.x = x;
this.y = y;
}
//这个是重点,原型变为new rect
PositionRect.prototype = new rect();
//构造函数PositionRect
PositionRect.prototype.constructor = PositionRect;
var P = new PositionRect(1, 2, 33, 22);
alert(P.area());
alert(P.constructor);

  在js中常见一个子类并不像创建一个直接继承的Object的类那样明显。首先,从子类的构造函数调用超类的构造函数是一个问题。当这么做的时候要注意,超类的构造函数是作为新创建的对象的一个方法调用的。接下来,设置子类构造函数函数原型对象需要一些技巧,必须显示地把这个原型对象创建为超类的一个实例,然后显示地设置原型对象的constructor属性。另外还要删除超类构造函数在原型对象中创建的所有属性,因为重要的是原型对象从它的原型那里继承的那些属性。

12.2构造函数链。

  如果构造函数需要显式地调用超类的构造函数,这叫做构造函数链。在创建子类的时候很常见。如果只有一个子类,可以为子类的原型对象添加一个名位superclass的属性。从而简化构造函数的语法。例如

PositionRect.prototype.superclass=rect;

和属性定义相比,构造函数链语法更简单:

function PositionRect(x, y, w, h) {
this.superclass(w, h);
this.x = x;
this.y = y;
}

注意,超类构造函数通过this对象地显式地调用。这意味着不再需要使用call()或者apply()来把超类构造函数作为该对象的方法来调用。

注意:这种技术只在简单地继承层次才起作用,如果B是A的子类,C又是B的子类,B和C都使用这种superclass方法,当创建c的实例时,this.superclass引用B(),B()构造函数将无线递归。除了简单的子类外,其他的继承都需要用函数构造方法。

13.调用父类的被覆盖的方法:

  可以用superClass.prototype.method.apply(子类)

14.类别识别:

  可以通过 instanceOf来测试是否是一个实例。注意对象是它自己的类地一个实例,也是任何超类的一个实例。因此,对于任何对象o,o instanceof Object总是为true,有趣的是instanceof对函数也邮箱,因此对任意函数f,下面的表达式都为true:

  typeof f=="function"

  f instanceof Function

  f instanceof Object

如果要测试对象是否是一个具体的类地一个实例,以及是否不是某个子类的实例,可以查看对象的constructor属性。

  var d=new Date();

  var isobject=d instanceof Object;

  var realobject=d.constructor==Object;

js 匿名函数 js-函数定义方法的更多相关文章

  1. js匿名自执行函数中闭包的高级使用(---------------------------******-----------------------------)

    先看看最常见的一个问题: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  2. js匿名自执行函数

    匿名自执行函数:没有方法名的函数闭包:闭包是指有权访问另一个函数作用域变量的函数: 通过一个实例来解释: 从网上找到了一个案例,使用了for循环.匿名自执行函数.setTimeout. 案例1: va ...

  3. JavaScript函数的多种定义方法

    缘起 javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对 javascript语言特性更进一步的深入理解, ...

  4. js静态私有变量(将方法变成原型模式,被所有实例共享,而方法操作变量,故变量是静态)

    js静态私有变量(将方法变成原型模式,被所有实例共享,而方法操作变量,故变量是静态) 一.总结 1.js函数中的private和public:js函数中的私有变量 var 变量名,公有变量 this. ...

  5. js课程 1-4 js变量的作用域是怎样的

    js课程  1-4   js变量的作用域是怎样的 一.总结 一句话总结:只有在函数内部前面带var的变量为局部变量,局部变量只能在函数体内使用. 1.什么情况下会出现NaN类型的错误,举一例? Num ...

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

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

  7. js 立即执行函数定义方法

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  8. js/jquery 回调函数的定义方法

    基本写法: 带参数的回调函数 以上回调函数,直接传入function作为参数,同样,还可以传入json对象作为参数...如下. 该方法的优势是可以定义多个回调函数....类似$.ajax回调函数中的s ...

  9. js 定义函数的几种方法 以及如何调用

    /*1.方法调用模式: 先定义一个对象,然后在对象的属性中定义方法,通过myobject.property来执行方法,this即指当前的myobject 对象.*/ var car = { carId ...

随机推荐

  1. Python 文件操作(2)

    上一篇学习了用内置函数 open() 来打开文件,并且用 f.close() 来关闭文件. 今天来学习对这个文件对象的其他操作:读.写.找到文件当前位置-- 1.读取文件 三种方法: read([si ...

  2. 深入理解flex布局的flex-grow、flex-shrink、flex-basis

    flex-basis用来设置初始的宽度(或者高度),优先级高于width flex-grow用来设置flex容器内 当还有剩余宽度(或高度)时, 子元素的缩放比例. 同理 flex-shrink 用来 ...

  3. Linux卸载Django

    cd /usr/lib/python2.7/dist-packages sudo rm -rf django sudo rm Django-1.8.7.egg-info 基本命令如此,具体文件因版本有 ...

  4. 设置 IntelliJ IDEA 主题

    一.选择File选项====>Settings====>Appearance====>Theme====>三选一切换主题

  5. ansible模块补充

    1.fetch模块, 将远程机器上的文件拉取到本地,以ip或者主机名生成目录,并保留原来的目录结构,与copy模块的功能相反. 主要参数 : dest  --  目标地址 src -- 源地址 例子 ...

  6. BZOJ3122 随机数生成器——BSGS

    题意 链接 给定 $p,\ a,\ b, \ x_1$,现有一数列 $$x_{i+1} \equiv (ax_i + b) \ mod \ p$$ 求最小的 $i$ 满足 $x_i = t$ 分析 代 ...

  7. 3、Spring Boot 2.x 核心技术

    1.3 Spring Boot 核心技术 1.3.1 起步依赖 为项目的依赖管理提供帮助.起步依赖其实就是特殊的Maven,利用了传递依赖解析,把常用库聚合在一起,组成几个为特定功能而定制的依赖. 1 ...

  8. python自动华 (十四)

    Python自动化 [第十四篇]:HTML介绍 本节内容: Html 概述 HTML文档 常用标签 2. CSS 概述 CSS选择器 CSS常用属性 1.HTML 1.1概述 HTML是英文Hyper ...

  9. pyecharts v1 版本 学习笔记 散点图

    散点图 基本案例 from example.commons import Faker from pyecharts import options as opts from pyecharts.char ...

  10. 富文本编辑器粘贴word

    很多时候我们用一些管理系统的时候,发布新闻.公告等文字类信息时,希望能很快的将word里面的内容直接粘贴到富文本编辑器里面,然后发布出来.减少排版复杂的工作量. 下面是借用百度doc 来快速实现这个w ...