//1.定义类并创建类的实例对象
function Person(){}
var p=new Person();
/*
2.定义公有属性和私有属性
定义使用属性:
1.在函数中:用var定义
2.在还是外:用对象.属性定义
定义公有属性:
1.在函数中:用this.属性定义
2.在函数外:函数名.prototype.属性名=默认值;
定义
*/
function Person2(){
var name="张三";
//定义属性为私有属性
this.age=100;
//定义公有属性
}
var p2=new Person2();
p2.weight=180;
//定义私有属性
Person2.prototype.sex="0";
Person2.aaa="bbb";
//alert(p2.weight);
var p23=new Person2();
//alert("weight="+p23.weight);
//alert("name="+p23.name);
//alert("age="+p23.age);
//alert("sex="+p23.sex);
/*
3.定义公有方法和私有方法
定义私有方法:
1.在函数中:采用 var 方法名=function(){}定义
2.在函数外:采用 对象名.方法名=function(){}定义
定义公有方法:
1.在函数中:采用 this.方法名=function(){}定义
2.在函数外:采用 对象名.prototype.方法名=function(){}定义
*/
function Person3(){
var show=function(){
alert("我是私有方法");
}
this.display=function(){
alert("我是公有方法");
}
}
var p3=new Person3();
p3.show();
//无法调用,因为是私有的
//p3.display();
p3.eat=function(){
alert("我是私有的方法,函数外定义");
}
Person3.prototype.age=function(){
alert("我是公有方法,函数外定义");
}
var p33=new Person3();
//p3.eat();
p33.eat();
//无法调用,因为eat方法是私有的,只属于p3对象
//p33.age();
Person3.age();
//无法调用,公用方法需要用对象来调用,只有静态方法才能用函数名来调用
/*
4.静态属性和静态方法
注意:定义静态属性和方法都用函数名来定义。
调用的时候只能用还是名来调用,不能用对象调用。
*/
function Person4(){}
Person4.name="张三";
Person4.show=function(){
alert("我是静态方法,只能用函数名来调用");
}
//Person4.show();
var p4=new Person4();
//p4.show();
//出错,因为静态方法只能用函数名来调用
/*
5.构造函数(有参,无惨)
注意:函数名不要重复,因为先定义的函数永远调用不了
*/
/*
7.如何创建Javascript对象
创建Javascript对象的三种方式
1.采用 new 函数名();
2.采用 new Object();
3.采用 Json格式定义
*/
//json格式
var json={"a":"中国","b":"美国","c":"英国 "};
//定义了一个json对象
var json1={1:"中国",2:"美国",3:"英国 "};
//alert(json.a);
//拿到中国字符串
//alert(json["b"]);
//alert(json1[1]);
//如果想拿到所有的值,需要使用foreach循环
//for(var a in json1){
//alert(a+" : "+json1[a])
//}
/*
扩展已有对象属性和方法
*/
//例如扩展Array数组的方法
/*
Array.prototype.getMax=function(){
var max=this[0];
for(var i=0;
i
max=this[i];
}
}
return max;
}
var arr=[12,52,3,15,66,32];
alert(arr.getMax());
*/
/*
继承
*/
function Person8(){
var name="张三";
this.age=100;
this.show=function(){
alert("我是公有方法");
}
}
function Student(){};
//希望student函数继承于Person函数
Student.prototype=new Person8();
var s=new Student();
//alert(s.name);
//alert(s.age);
//s.show();
/*
arguments对象
arguments对象:代表了一个参数对象
*/
function $(id){
//用于判断用户传递的参数个数
if(arguments.length>1){
alert("传递的参数不得大于1个");
return;
}
var p=document.getElementById(id);
if(p==null){
alert("传递id的值不对!");
}
return p;
}
function fun(){
var p=$("p",1);
alert(p.innerHTML);
}
/*
with
*/
function fun1(){
var p=$("p");
//p.style.border="1px read sode";
//p.style.color="green";
//p.style.cursor="hand";
//该效果等价于如下with,相当于少写个p
with(p){
style.border="1px read sode";
style.color="green";
style.cursor="hand";
}
}
/*
foreach循环
foreach循环是对对象的属性进行循环
*/
function fun2(){
var p=$("p");
for(var a in p){
alert(a);
}
}
推荐阅读
- Java|Java学习笔记(五)(Java多线程(细致入微,持续更新))
- 架构|Java大牛带你4小时开发一个SpringBoot+vue前后端分离博客项目
- java|2022蓝桥杯备赛 python 真题大联赛 第1期
- 前端设计|Vue Element 安装与使用
- js原型和原型链疑问
- idea 使用 mvn clean package 报错 Could not create local repository
- 体系吃透前端工程化,大厂级实战项目以战带练mkw
- Java核心知识|面试必问系列 --- 多线程安全问题
- 多线程|Java多线程基础(线程与进程的区别,线程的创建方式及常用api,线程的状态)