javascript基础(一)函数与对象

最近学习Vue的过程中,发现代码组织得很混乱,主要原因应该是对JS的学习不够深入,因此抽出时间来深入理解一下JS

参考:

深入理解javascript原型和闭包

一、一切皆对象

1.1哪些是对象

使用typeof关键字可以查看某个变量的类型

console.log(typeof a)  //undefined
console.log(typeof 1)   //number
console.log(typeof ['a', 'b'])   //object
console.log(typeof {'a': 1, 'b': 2})   //object
console.log(typeof function () {
    alert("en")
})         //function
console.log(typeof 'nihao')   //string

函数、对象、数组是引用类型,其他数字、字符串、undefined是值类型
判定是否是对象,用instanceof Object

function f() {
    alert("i am object")
}
console.log(f instanceof Object) //true

1.2对象是什么

对象是一组属性的集合,类比C++、java,对象有属性、方法,在JS中是通过键值对的方式表示

var obj = {
    name: 'haha',
    age: 10,
    getName: function () {
        return name
    },
    setAge: function (age) {
        this.age = age
    }
}

obj.setAge(20)
console.log(obj.age)  //20

这样是不是就很熟悉了呢
这是一个普通对象,那么函数也是对象,函数如何定义属性和方法呢

var fn = function () {
    alert('lala')
}
fn.age = 34
fn.getAge = function () {
    return this.age
}
console.log(fn.age)
console.log(fn.getAge())

PS:说一下两种定义函数的区别

var fn = function () {
    alert('en')
}

fun()
function fun() {
    alert('fun')
}

第一种方式只有执行到var..时函数才被定义,相当于定义了一个匿名函数,把他赋给fn这个变量,第二种方式js文件被引入时就已经定义,也就是说在他之前使用fun()是正确的。

二、函数和对象的关系

2.1对象都是由函数创建

看一个例子

function fn() {
    this.name = 'en'
    age = 13
    this.getAge = function () {
        return age
    }
}

var obj = new fn()
console.log(obj.name)
console.log(obj.age)
console.log(obj.getAge())

obj这个对象通过new一个function出来的,这相当于我们提前写好了一个‘类’,这个‘类’就是fn这个function
PS:补充一下JS function中let,var,this定义变量的区别
参考:https://blog.csdn.net/qq_33712555/article/details/68237653

function fn() {
    var aa = 1;
    this.cc = 3;
    this.getAa = function () {
        return aa
    }
}

var obj = new fn()
console.log(obj.aa)  //undefined
console.log(obj.cc)  //3
console.log(obj.getAa()) //1

var定义的变量是局部变量,只能在函数内部使用,如果想在外面使用需要return出去
this定义的变量,可以通过function new出来的对象调用,所以可以在函数内部通过this定义一个方法来访问var定义的变量

2.2语法糖

var arry = ['123', 1, true]

其实也是由函数new来的
相当于

var arry = new Array()
arry[0] = '123'
arry[1] = 1
arry[2] = true

只是通过语法糖简化了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值