1.面向对象三大特征:继承,多态,封装
2.JavaScript是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。
3.javascript对象
对象是一个包含相关数据和方法的集合,通常由变量函数组成;当对象的成员是函数时,可以使用更加简洁的方法,比如bio function()可以用bio()替换。
4.访问对象的属性具体方法有:
(1)点表示法
(2)子命名空间
(3)括号表示法
括号表示法一个有用的地方是它不仅可以动态的去设置对象成员的值,还可以动态的去设置成员的名字。
5.可以通过声明设置(更新)对象成员的值,设置成员并不意味着只能更新已经存在的属性的值和方法,也可以创建新的成员。
6.关键字this
创建多个对象时,this 可以对每一个创建的对象都使用相同的方法定义
开始使用构造函数从单个对象定义创建多个对象时,this很关键。
7.构造函数(大写字母开头,对象类型命名)
如果我们不想编写每一个需要使用的对象,而是希望对象是可复用的。那么我们需要用到构造函数,使用new关键字来调用函数,调用构造函数时将会具有以下功能:
(1)创建一个新对象
(2)将this绑定到新对象,以便可以在构造函数代码中引(3)用this运行构造函数中的代码
(4)返回新对象
8.对象原型
原型是JS对象相互继承特性的机制
当你试图访问一个对象的属性时:如果在对象本身中找不到该属性,就会在原型中搜索该属性。如果仍然找不到该属性,那么就搜索原型的原型,用Object.getPrototypeOf() 函数来寻找,Object.prototype,它是最基础的原型,所有对象默认都拥有它,Object.prototype原型是null,位于原型链的终点。
9.原型链
每一个对象都有自己的原型,而每个原型也是对象,也有自己的原型,从而形成链式结构,称为原型链,终点为null
对象访问原型链规则: 就近原则
10.设置原型的方法
(1)Object.create()
(2)构造函数。
11.直接在对象中定义的属性称为自有属性,可以使用静态方法 Object.hasOwn() 检查一个属性是否是自有属性。
12.封装的私有属性
私有数据属性必须在类的声明中声明,而且其名称需以 # 开头,私有方法也是#开头,只能在类自己的方法中调用。
问题回答:
1.js是面向对象的吗?
javascript不是面向对象语言,而是一种基于对象的脚本语言。
2.日常编程中优先使用点表示法还是括号表示法?
点表示法是首选,因为它更容易阅读,更少并使用积极的JavaScript最小化器更好地工作。
点表示法通常更加简洁和直观,适用于静态的属性访问;而括号表示法更为灵活,适用于需要动态访问属性的情况。
3.什么情况下使用括号表示法?
括号表示法用于访问对象的属性或方法时需要使用变量或表达式作为属性名。它的形式是使用方括号([ ])将对象和属性名(或属性名的表达式)包裹起来,例object[property]
或 object[expression]
。括号表示法灵活性更高,可以动态地根据变量或表达式的值来访问属性。
4.Js对象和Java对象之间的区别
(1) 编程语言:JavaScript是一种解释型的脚本语言,而Java是一种编译型的面向对象编程语言。它们的语法和语义有很大的差异。
(2)类型系统:JavaScript是一种动态类型语言,对象的类型可以在运行时动态改变。Java是一种静态类型语言,对象的类型在编译时确定,并且不能在运行时改变。
(3) 类定义和实例化:在Java中,对象的创建需要先定义一个类,然后通过关键字new
实例化一个对象。而JavaScript中的对象可以直接通过对象字面量({}
)或构造函数进行创建,无需事先定义类。
5.使用构造函数 创建对象像面向对象三大特征中的哪一个?
使用构造函数创建对象时,通常会定义对象的属性和方法,并通过封装来隐藏对象的内部实现细节。因此,使用构造函数创建对象主要体现了面向对象编程的"封装"特征。
6.原型链像面向对象三大特征中的哪一个?
原型链在面向对象编程中主要体现了继承的特征。
在面向对象编程中,原型链是实现继承的一种方式。通过原型链,一个对象可以继承另一个对象的属性和方法。在JavaScript中,每个函数都有一个prototype属性,当一个对象通过构造函数创建时,该对象的原型(即构造函数的prototype对象)就会被设置为该构造函数的一个实例。
7.子对象设置和父对象同名的方法,那么执行哪一个?
在JavaScript中,如果子对象和父对象有同名的方法,那么当通过子对象调用该方法时,会优先执行子对象的方法。这是因为在原型链中,子对象的原型(即父对象)是在链的下一级,因此在查找方法时,会先查找子对象自身的方法,然后再查找父对象的方法。子对象覆盖父对象的方法。
8.属性遮蔽面向对象三大特性中哪一个的具体实现?
属于多态,多态有两种常见的实现形式,重写和重载,属性遮蔽属于多态的重写。
9.classh和extends什么情况下无效?
在Java中,如果子类不能继承父类的属性和方法,那么使用class和extends关键字会导致编译错误。
(1)访问控制权限:如果父类的属性或方法被声明为private,那么子类无法直接访问它们,因此无法继承。
(2)构造方法:如果子类没有使用super关键字调用父类的构造方法,或者调用的参数与父类构造方法的参数不匹配,那么会导致编译错误。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。