js 函数中方法定义在函数内部,定义在函数外,与prototype上的区别

js 函数中方法定义在函数内部,定义在函数外,与prototype上的区别

  • 区别
方法调用描述
构造函数内函数名直接调用报错
函数外函数名直接调用正常执行
函数外 prototype上函数名直接调用报错
构造函数内实例化对象调用正常执行
函数外实例化对象调用报错
函数外 prototype上实例化对象调用正常执行

在函数内用this定义的方法,只能用实例化对象来调用
在函数外定义的方法,只能用构造函数调用
在函数外 prototype上定义的方法,只能用实例化对象来调用。
this定义的方法,与prototype上的方法的区别是 this的方法,可以访问到函数内的私有变量

<script>
        //首先创建一个函数
        function Person(name, age) {
            this.name = name;
            this.age = age;
            this.write = function () {
                console.log('hello function');
            }
        }
        Person.write1 = function () {
            console.log('hello jq')
        }
        Person.prototype.write2 = function () {
            console.log('告辞 node.js');
        }
        //现在来验证 
        //首先Person直接调用三个方法
        // Person.write();  //× 报错
        // Person.write1();    //hello jq
        // Person.write2();    //× 报错

        //然后用对象的实例来调用这三个方法
        let a = new Person();
        a.write(); // hello function
        // a.write1(); //× 报错
        a.write2(); //告辞 node.js
    </script>
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值