JS学习之函数和创建对象的方法

1>函数,由事件驱动或主动调用的,可重复执行的代码块

    --->函数调用形式

    如下,用function直接先声明(函数),后调用,是最常见,也是最好理解的一种形式。

    

    

    --->或者如下形式,var声明

    

    --->函数带参数

    

    --->函数带参且有返回值

    

2>创建对象的方式

    2.1>使用Object或对象字面量创建对象

    

    如上,应了js中常用的一句话“没有对象,就自己new一个”。

    新建对象之后,就可以用 对象.属性或者 对象['属性'] 来增改对象的属性和值

    或者如下方法创建,类似之前的array,简单直观

    

    上面两种方法都存在一个问题,当我需要很多对象的时候,需要拷贝这段代码多次,有没有像python中‘类’一样的

    东西,只要有类,就可以源源不断的实例化出对象?    ----这里,引出构造函数模式创建对象方式,也是JS中比较

    常用的一种方式。

    2.2>构造函数模式创建对象

        什么是 构造函数? 和 普通函数有什么区别?

        其实我们之前就用过构造函数,如下,

        创建数组时, var arr = new Array();

        创建对象时, var stu1 = new Object();

        对以上两个问题做个总结,如下

        1、实际上并不存在创建构造函数的特殊语法,与普通函数唯一的区别在于调用方法。对于任意函数,

            使用new操作符调用,那么它就是构造函数;不使用new操作符调用,那么它就是普通函数。

        2、按照惯例,我们约定构造函数名以大写字母开头,普通函数以小写字母开头,这样有利于显性区分

            二者。例如上面的new Array(),new Object()。

        3、使用new操作符调用构造函数时,会经历(1)创建一个新对象;(2)将构造函数作用域赋给新对象(

            使this指向该新对象);(3)执行构造函数代码;(4)返回新对象;4个阶段。

                

        -->优化点,各自对象的属性(也就是name,age那些)是根据自身设置的,肯定是需要不同的,所以

        它们需要在 new的时候单独创建(单独占用内存空间),那么方法呢?这些名称一样的方法其实 实现的

        功能都是一样的(如上,都是一个弹窗效果),但是却也都占据了各自独立的内存空间,能否优化下?

        对于"这类问题",能否实现跟python一样,给个接口,不同对象调同一个接口的方式?

        答案是肯定,我们把这些方法放到构造函数外就行了,优化如下,

          

        执行结果如下,一样,

        

    

       现在func_out函数只占了一处内存,构造函数里面只是调用而已,实现了由多个对象‘共享’一个

       函数的效果,解决了内存浪费的问题。

        但是,但是,通过这种全局函数的方式解决对象内部共享的问题,终究不像是最好的方案,因为若是这类

        函数太多了,我们想要将自定义对象封装的初衷便几乎无法实现了,由此,要引出一个最优的方案----

        原型对象模式创建对象

    2.3>原型的模式创建对象

        

    这里只是先做个标记,后续有空再研究下该方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值