一切皆对象 :
js中的对象如:
对象 属性 方法
人 身高、体重 会唱歌、会跳舞、写代码
一切皆对象说法又不是完全都对,举例如下:
js中的数据类型
undefined、string、boolean、null、number 基本类型也叫原始值
function、Object、Array 引用类型 才是对象
面向对象可以理解成一组键值对
创建对象的三种方式
第一种:通过new关键字创建
var obj1 = new Object( );
第二种:字面量创建对象
1) 简单字面量
var obj = { }
obj.name = "aaa";
obj.aeg = 23;
obj.todo = function ( ) {
return this.name
}
2)嵌套字面量 (也是推荐写法)
var obj1 = {
name:" 小小",
age:23,
todo:function(){
console.log(this.name);
},
address:'北京市海演区'
}
备注:嵌套字面量 延伸问题小记
函数声明:在声明前可以使用 解析器会优先解析 存在变量提升,举例如下:
add(2,3) //成立
function add(a,b){ return a+b }
add(2,3) //成立
// 函数表达式 必须先声明才能使用 解析器解析完才能使用,举例如下:
add1(3,5) //不成立,报错
var add1 = function(3,5){ return a+b }
add1(3,5) //成立*/
第三种 构造函数
function Person (name, age) {
this.name = name;
this.age = age;
this.todo = function () { return this.name;}
}
var person = new Person("张三",20); //实例对象
调用实例的name
console.log(person.name);
console.log(person.age);
console.log(person.todo());
实例是否属性构造函数
console.log(Person.prototype.isPrototypeOf(person))
实例 __proto__ 修改构造函数的属性 console.log(person.__proto__.name = "小小")
原型:constructor 构造器 公共存放区
构造函数:prototype
延伸小记
普通函数
function person(name){return name}
person("张三")
工厂模式
function person(name,age){
var obj = new Object();
obj.name = name;
obj.age = age;
return obj;
}
var a1 = person("张三", 28);
普通函数与构造函数的区别
一:this指向不一样
构造函数中的this指向创建对象的实例对象
普通函数的this指向调用者
二:调用方式不同
构造函数 new 普通函数不需要
三 :命名方式:
构造函数首字母大写 普通函数不需要首字母大写
js 对象******个人小记
最新推荐文章于 2022-01-13 15:31:02 发布