1简单说下你对函数的了解
2简单说下你对面向对象的理解
面向对象:通过类可以创建多个具有相同属性和方法的对象。
面向对象有两种,基于类的(class-based)面向对象和 基于原型的 (prototype-based) 面向对象
在基于类的面向对象方式中,对象(object)依靠 类(class)来产生。
而在基于原型的面向对象方式中,对象(object)则是依靠 构造器(constructor)利用 原型(prototype)构造出来的。
ECMAScript中没有类的概念。ECMAScript中的对象是基于原型的面向对象方式。
javaScript包括:
①ECNAScript(核心)主要规定了js的规范和语法
②dom对象 文档对象 调用document的方法
③BOM 浏览器对象 主要用window.方法名 比如:window.onload()
3简单说下你对原型链的理解
prototype 原型属性
主要解决:函数因为使用非常非常多,重复执行效率太低。
Person.prototype.showName = function() { // 用的共同的父亲
alert("我的名字是"+ this.name);
}
原型链是实现js继承的主要方法,他的原理是让利用原型让一个引用类型继承另一个引用类型的属性和方法。如果我们让一个原型对象等于一个实例,那么,此时的原型对象将包含指向另一个原型的指针假如另一个原型又等于一个对象的实例,如此一层套一层,这就是原型链的基本概念。
例子
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
<pre>
<script>
function Person(name,age){
this.name=name;
this.age=age;
}
Person.prototype.sayName=function(){//原型模式
alert(this.name);
}
Person.prototype.hobby=["singsong","dancing","music"];
var person1=new Person("lily",23);//构造函数模式创建对象实例
person1.hobby=["ss","55"];
document.writeln("person1.name="+person1.name);
document.writeln("person1.age="+person1.age);
document.writeln("person1.hobby="+person1.hobby);
var person2=new Person("tom",25);
person2.sayName=function(){
alert("person2名字是:"+this.name+";年龄:"+this.age);
}
person2.sayName();
person2.hobby.push("打架");
document.writeln("person2.hobby="+person2.hobby);
</script>
</pre>
</html>
4简述你对JS中继承的理解
通过例子来看
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
function Parent(){
this.name='song';
}
function children(){
this.age=25;
}
children.prototype=new Parent();
var demo=new children();
alert(demo.name);
alert(demo.age)
</script>
</body>
</html>
4面向对象的特性
1. 抽象
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。
2. 封装
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面
3. 继承
4. 多态
多态是指两个或多个属于不同类的对象,对于同一个消息(方法调用)作出不同响应的方式