var bai = parseInt(j/100); var shi = parseInt((j-bai*100)/10); var ge = j%10; if (bai*bai*bai +shi*shi*shi +ge*ge*ge == j){ console.log(j); } } </script>
1 2 3 4 5 6 7 8 9 10 11 12 13
<script> for (var i = 0; i < 5; i++) { /* * 在循环内部建一个循环来控制图形的宽度 * 目前外部for循环执行1次,内部for循环执行5次 * 外部for循环控制高度 * */ for (var j = 0; j < i + 1; j++) { document.write("* ") } document.write("<br />") } </script>
1 2 3 4 5 6 7
for (var i = 1; i <= 9; i++) { for (var j = 1; j <= i ; j++) { document.write(j+"*"+i+"="+j*i+" ") } document.write("<br />")
functionsun(a,b,c) { var d =a+b+c; return d; } var result = sun(1,2,3); console.log(result);
5.4立即执行函数
函数定义完后,立即被调用执行
只会执行一次
1 2 3
(function() { alert("我是一个匿名函数"); })();
5.5枚举对象的属性
==语法==
使用for … in 语句
1 2 3 4 5 6 7 8 9 10
var obj ={ name:"孙悟空", age:13, gender:"男", address:"花果山" } for (var n in obj){ console.log("属性名:"+n); console.log("属性值:"+obj[n]); }
5.6作用域
==全局作用域==
直接编写script标签中的JavaScript代码都在全局作用域
全局作用域在页面打开时创建,页面关闭时销毁
全局作用域中有一个全局对象window,可以直接使用
全局作用域中的变量都是全局变量在任意部分都可以访问
==函数作用域==
调用函数时创建函数作用域,函数执行完毕后,函数作用域销毁
每次调用函数就会创建i虚拟的函数作用域,之间互相独立
函数作用域可以访问全局作用域,而全局作用域却不能访问函数作用域
当在函数作用域操作变量时,先会找自身作用域来使用,没有就往上一级寻找,直到找到全局作用域
==注意==
全局和函数作用域都有声明提前的特性
使用var关键字声明的变量,会在函数中所有代码执行之前被声明
函数声明也会在函数中所有的代码之前被执行
在函数中,不适用var声明的变量都会成为全局变量
定义形式参数相当于在函数作用域中声明了变量
5.7构造函数
==构造函数的形式==
构造函数就是一个普通的函数,创建方式习惯上首字母大写
构造函数与普通函数的调用方式不同,需要使用new关键字来调用
==构造函数的执行流程==
它会立即创建一个新的对象
将新建的对象设置为函数中的this,在构造函数中可以使用this来引用新建的对象
按顺序执行函数中的代码
见新建的对象作为返回值返回
==扩展==
使用同一个构造函数创建对象时,我i们称为一类对象,也将一个构造函数称为一个类
我们将通过一个构造函数创建的对象,称为时该类的实例
==this的总结==
当以函数的形式调用时,this是window
当以方法的形式调用时,谁调用方法this就是谁
当以构造函数的形式调用时,this就是新创建的那个对象
1 2 3 4 5 6 7 8 9 10
functionPerson(name,age,gender) { this.name = name; this.age = age; this.gender = gender; this.sayName = function () { alert(this.name); } } var per = new Person("小明",12,"男"); console.log(per);
1 2 3 4 5 6 7 8 9 10 11 12 13
//修改后的,为了更好释放空间 functionPerson(name,age,gender) { this.name = name; this.age = age; this.gender = gender; this.sayName = fun; } functionfun () { alert(this.name); } var per = new Person("小明",12,"男"); console.log(per); per.sayName();
5.8原型对象
我们所创建的函数,解析器都会为函数添加一个属性prototype,这个属性对应的对象就是原型对象
函数对于普通函数调用prototype没有任何意义,只有构造函数调用时会有一个隐含的属性
原型对象相当于公共部分,所有同一个类的实例都可以访问原型对象
当我们访问对象的一个属性或方法时,它会先找自身中,没有就直接使用原型对象中
这样以后就可以把公共部分提取到原型对象中,就不会影响全局作用域了
1 2 3 4 5 6 7 8 9 10 11 12 13
functionPerson() {
} var mc = new Person(); Person.prototype.a = 123; //向Person的原型中添加属性a mc.a="我是mc中的123"; //向Person的原型中添加一个方法 Person.prototype.sayHello = function(){ alert("hello"); } mc.sayHello(); alert(mc.a);
==判断属性的扩展==
1 2 3 4 5 6 7 8 9 10 11
functionPerson() {
} Person.prototype.name = "我是原型中的名字";
var per = new Person(); per.age = 18; //用in检查对象中是否含有某个属性时,如果对象中没有原型中有,也会返回true console.log("name"in per); //可以使用对象的hasOwnProperty()来检查自身中是否有该属性 console.log(per.hasOwnProperty("age"));
var arr = [1,3,4,2,3,3,5,4,6,8,5,1] //获取数组中的每一个元素 for (var i = 0; i < arr.length; i++) { //获取数组当前后的所有元素 for (var j =i+1; j < arr.length; j++) { //判断两个元素是否相等 if (arr[i] == arr[j]){ //如果相等,则删除J对应的元素 arr.splice(j,1); //当删除了当前J所在元素后,后边的元素会自动补位 //此时要再次比较一次j所在位置的元素 j--; } } } console.log(arr);
6.6数组剩余的方法
1 2 3 4 5 6 7 8 9 10 11
<script type="text/javascript"> /** * concat()可以连接两个或多个数组,并将新的数组返回 * ---该方法不会对原数组产生影响 */ var arr = ["小明","小红","小白"]; var arr1 =["小孩","小绿","小黄"]; var arr3 = ["小子","好家伙"]; var result = arr.concat(arr1,arr3); console.log(result); </script>
1 2 3 4 5 6 7 8 9 10
/** *join() 该方法可以将数组转换为一个字符串 * ---该方法不会对原数组产生影响,而是转换为字符串作为结果返回 *---在join()中可以指定一个字符串作为参数,将作为数组中元素的连接 * ---如果不指定默认为逗号 */ ss = ["孙悟空","猪八戒","沙和尚"]; var a = ss.join("-"); console.log(a);
<script> /** * Date对象 在js中表示时间 * 创建一个date对象 则会进行封装为当前代码执行的时间 */ var d = newDate(); /** * 创建一个指定的事件对象 * 日期格式 月/日/年 时:分:秒 */ var d2 = newDate("1/14/2021 22:09:55"); var data = d2.getDate();//获取当前日期对象时几日 var day = d2.getDay();//获取当前日期对象是周几,0表示周日 var month = d2.getMonth();//获取当前是几月 var time = d2.getTime();//获取当前时间戳 var start = Date.now();//获取当前时间戳 console.log(d); console.log(d2); console.log(data); console.log(day); console.log(month); console.log(time); console.log(start); </script>
6.10 Math
1 2 3 4 5 6 7 8 9 10 11 12 13
<script> /** * Math 和其他的对象不同,他不是一个构造函数 * 它属于一个工具类不同创建对象,它里边封装了数学运算相关的属性和方法 */ console.log(Math.PI);//表示圆周率 console.log(Math.abs(-1));//计算一个数的绝对值 console.log(Math.ceil(1.2));//向上取整 console.log(Math.floor(1.7));//向下取整 console.log(Math.round(1.4));//四舍五入 var max = Math.max(10,2,45,4);//选出最大的 console.log(max); </script>