JavaScript(10)——JS面向对象基础

本文深入解析JavaScript中如何使用函数闭包模拟类的概念,通过具体示例解释对象的声明、属性与方法的定义,以及构造函数的使用。同时,文章强调了JavaScript并非面向对象语言,而是通过原型继承实现类似功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript中没有类的语法,是用函数闭包(closure)模拟出来的,下面讲解的时候还是用C#中的类、构造函数的概念,JavaScript中String、Date等“类”都被叫做“对象”,挺怪,方便初学者理解,不严谨。JavaScript中声明类(类不是类,是对象):

        function Person(name,age) {
            this.name = name;  //属性。this.name是给Person对象动态定义一个name属性,再通过等号把传递进来的参数name的值赋给这个属性。
            this.age =age;  //属性。同上。
            this.sayHello=function(){  //sayHello是方法,等号后面是匿名方法
              alert("你好,我是"+this.name+",我"+this.age+"岁了");
            }
        }         
        var p1 = new Person("tom",20);
        p1.sayHello();

必须要声明类名,function Person(name,age)可以看做是声明构造函数,Name、Age这些属性也是使用者动态添加的。

var p1 = Person("tom", 30);//不要丢了new,否则就变成调用函数了,p1为undefined。new 相当于创建了函数的一个实例。

附加:

1. 必须要明确的一点:JavaScript不是面向对象的语言。

2. JavaScript命名规范:对象的首字母用大写,方法的首字母用小写。如上面的代码中,Person是对象因此首字母大写,sayHello是方法因此首字母小写。

规范只是一种潜规则,相当于道德,可以不遵守。规则相当于法律,必须遵守。

3.

var p1 = Person("tom", 30);  //Person方法调用匿名函数("tom", 30)的返回值,再把Person方法赋值给变量p1。这里的("tom", 30)匿名方法没有返回值,所以返回undefined,导致这行代码报错。
var p1 = new Person("tom",20);  //创建了一个函数的实例,也叫函数的对象。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值