13-引用类型习题
- 请创建一个函数,可以根据输入不同的姓名,年龄、性别,创建不同的用户实例
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <script type="text/javascript"> // 请创建一个函数,可以根据输入不同的姓名,年龄、性别,创建不同的用户实例 function createUser(name, age, sex){ var o = new Object() o.name = name o.age = age o.sex = sex o.toString = function(){ return "我的名字" + o.name + "我的年龄:"+o.age + "性别:" + o.sex } return o } wangsan = createUser("wangsan", 18, "girl") console.log(wangsan) </script> </body> </html>
- 写一个copy对象的函数,实现两个对象之间值相等,但不是同一个对象,比如 obj2拷贝obj1中的每一项,但是obj1的修改不影响obj2(浅拷贝与深拷贝)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <script type="text/javascript"> // 写一个copy对象的函数,实现两个对象之间值相等,但不是同一个对象,比如 obj2拷贝obj1中的每一项,但是obj1的修改不影响obj2(浅拷贝与深拷贝) function copyObject(object){ var o = new Object() for (i in object){ // 深拷贝 /* if (typeof(object[i]) == "object"){ o[i] = copyObject(object[i]) } else { o[i] = object[i] } */ // 浅拷贝 o[i] = object[i] } return o } var obj = new Object() obj.name = {first:"luxp", last:"pp"} obj.age = 18 </script> </body> </html>
#浅拷贝 #深拷贝![]()
- 浅拷贝运行结果:(obj的属性改变,obj_2的也发生改变)
- 深拷贝运行结果:(当obj的name.first属性改变时,obj_2的name.first属性没有变化)
- 系统有这么一些商品:(洗衣机,3000元), (笔记本电脑,12000元),(音箱,1000),请使用合适的方式表示这一组商品
goods = []
goods[0] = ["洗衣机",3000],
goods[1] = {"笔记本电脑":12000}
goods[2] = {"音箱": 1000}
- 实现一个FIFO队列对象,只有两个方法put(向队列写入数据)与 get(从队列中读取数据)
var queue = new Object()
queue.data = []
queue.put = function(val){
queue.data.push(val)
}
queue.get = function(){
return queue.data.shift()
}
- [{“name”:“luxp”},{“name”:“wangsan”}, {“name”:“ls”}, {“name”:“ns”} ]使用sort按照name的值排序
array = [{"name":"luxp"},{"name":"wangsan"},{"name":"ls"},{"name":"ns"}]
function compare(val1,val2){
if (val1.name > val2.name){
return true
} else {
return false
}
}
sorted_array = array.sort(compare)
- 使用filter 挑出 5的倍数
array = [1,3,5,8,10,15]
new_array = array.filter(function(val){
if (val%5==0){
return true
}
})
-
有这么一份商品价格数据
[“商品名称”,商品价格,销售额]
[[“good1”,1000,5000],[“good2”,1200,3600],[“good3”,1500,6000],
[“good4”,1000,2000],[“good5”,1300,5200],[“good6”,1400,5600]]
统计一下,价格在1200以上(不包含1200)的商品销售总额
array = [["good1",1000,5000],["good2",1200,3600],["good3",1500,6000],
["good4",1000,2000],["good5",1300,5200],["good6",1400,5600]]
function compare(pre,cur){
console.log("cur",cur,cur[0])
if (cur[1]>1200){
return pre+cur[2]
} else {
return pre
}
}
res = array.reduce(compare, 0)
- 找出往后500年的闰年,并console中输出出来
闰年计算方法:
普通年能被4整除且不能被100整除的为闰年
世纪年能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)
date = new Date() year = date.getFullYear() for (i=0;i<=500; i++,year++){ if (year%4==0 && year%100!=0){ console.log(year) } if (year%100==0 && year%400==0){ console.log(year) } }
- 注册用户要求: 不能含有kefu, kf,admin等字符,并且以任意英文字母开头,包含英文或者数字,
最短不能少于5个字符,最长不能超过15个字符,写一个用户输入验证函数
reg1 = new RegExp("^[a-z]\\w{4,14}$")
reg2 = new RegExp("(kf)|(kefu)|(admin)")
function validateUserName(user_name){
if (!reg1.test(user_name)){
return false
}
if (reg2.test(user_name)){
return false
}
return true
}



浙公网安备 33010602011771号