在JS中,函数与对象的区别是什么呢?

JavaScript013

在JS中,函数与对象的区别是什么呢?,第1张

在js中函数就是一个对象,函数在没有返回值时默认返回的一个对象,一个函数也可以作为参数传递给另外一个函数,这种方式通常被叫做 callback 模式。另外推荐给你一本书《JavaScript.Patterns》里边对日常代码编写规范做了很好的解释,对于js语言也解释的很详细,如果你已经有一定的js基础了推荐你看看这本书

所有的函数都是一个对象,所有的对象,都可以用构造函数创建。

凡是构造函数都是可以new的,也就是说都可以成为对象,这里当然要给Function类型的对象取个名字,它就叫“Function对象”。

函数

function fun(){

    // 定义变量时没有使用关键字

    var atguigu = "this is atguigu"

    // 在函数作用域访问变量 

    console.log( atguigu )

    }

    

    fun()

构造函数----》new成为Function对象

function Fun() {

   this.name = '小王'//定义属性

   this.age = '18'//定义属性

   this.fn = function () {

   return 1999

   }

}

对象

var obj1 = {

    name : '手速快',//属性

    age :  27,//属性

    fun :function () {//方法

    return  10

   }

}

console.log(obj1)

JS中的Function对象Function是函数的原型,所有的函数都来源于Function,获得函数的方法有两种类型,分为动态函数和函数继承。- 动态函数创建一个Function语法: var func = new Function(arg1, arg2, ..., argN, 函数体)var str = "var x = 5for(var i = 0i <10i++) { alert(x+i)}"var func = new Function(str)func()- 函数继承原型链:js构造函数创建的每一个对象都是来源于原型的派生对象,而在js中每一个函数都有一个属性,叫prototype(原型),所有的对象的原型构成链以后,都到Object,而Object的原型是null扩展方法:为字符串添加扩展方法, 就是给字符串的原型添加一个方法即可,如   String.prototype.AddWJX = function() { return "☆" + this + "☆"//this表示字符串本身} 实现函数继承的方法:js的继承来源于对象而非类,通过Function对象为所有的构造函数添加方法。//为Function的原型添加一个inherit()方法Function.prototype.inherit = function(objBase) {// 传进来就是父类对象this.prototype = objBase}var o = {name:"上帝", sex:"女", age:100}//方法继承var func = function (){}func.inherit(o)//对象继承var Person = function() {this.say = function() {alert("名字是" + this.name)}}Person.inherit(o)var pp = new Person()pp.say()